位置: 编程技术 - 正文
推荐整理分享详解PHP使用Redis存储session时的一个Warning定位(php redis常用命令),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:php redis incr,php+redis,php+redis,php redis pipeline,redis在php项目中的使用实例,php redis常用命令,php redis常用命令,php+redis,内容如对您有帮助,希望把文章链接给更多的朋友!
1. 问题现象
系统页面刷新的时候,偶尔会报错下面的Warnning,但是不经常出现:
Warning: Unknown: Failed to write session data (Redis). Please verify that the current setting of session.save_path is correct ( in Unknown on line 0
看网络有人说是redis版本的问题、但是没有具体结论,那么本着学习的态度,自己试试看看能不能捉出这个bug.
定位问题:
查看PHP文件是否有设置session的地方,发现没有
继续检查php配置文件,发现配置了session存储到redis里面
1、继续查看php Session扩展源代码,定位出错提示语在函数php_session_save_current_state中
检查session扩展文件中出错提示:
下面两个函数调用:php_session_flush()
由上面可以看到,php_session_save_current_state是在 php_session_flush中调用,即在session保存、清空等刷新写session的时候会产生。
由php seesion源码没有发现什么问题,突然想到会不会是Redis本身有没有啥问题,导致的写出错。因而继续从redis里面找问题:
Redis问题定位
1. 首先查看Redis日志文件:
看到如下每5分钟会刷新一下如下log:
怀疑这就是问题的PHP写日志失败的原因了。那么Redis为啥会5分钟重启呢?继续追查!
2. 是系统内存不够、Redis core了?
查看系统和Redis内存使用状态:
系统内存状态:
Redis服务器占用的内存状态:
可以看到Redis其实内存占用非常少。redis重启原因暂且不明。
3. 定时脚本
因为重启日志5分钟一次、非常规律,因而怀疑是不是别的原因导致Redis重启,比如定时脚本。
因为本人没有root corntab权限,找老板提权,看到赫然存在着一个crontab,5分钟监控一次redis。
如下:
查看脚本内容
这是一个检查Redis端口是否提供服务的脚本,如果检查不成功,就拉起Redis。
可以看到这个脚本本来没有什么问题。
但是:通过手动执行这个命令发现:
这台机器没有安装nmap 这个命令,
所以这个脚本最后总是执行失败!然后Redis重启。
因为问题根源找到了,找运维安装相关命令,问题解决。
标签: php redis常用命令
本文链接地址:https://www.jiuchutong.com/biancheng/291093.html 转载请保留说明!友情链接: 武汉网站建设