redis :read error on connection
最近做了一个多人竞拍的小功能 因为以前没做过 所以踩了很多坑
用的是 mysql + php + redis 实现的竞拍功能
这里先说一下踩得第二个坑
redis 的原因 真是欲哭无泪 解决完一个 还有一个
其实是先发现的这个 但是没办法复现 就丢上去了执行了
之后偶然把这个问题复现了
先说一下是什么问题吧
php 捕获的异常提示是PHP Fatal error: Uncaught RedisException: read error on connection
很多人都说是 PHP-FPM的超时时间是1s钟,也就是说如果PHP程序执行超过1s钟就会中断,另外由于Redis是单线程的,
所以如果一个请求的时间太久就会造成Redis假死状态,接收不了其他请求,继而就会造成PHP程序连接报错。(这段话是我复制过来的)
说是设置php 超时时间 redis 超时时间 为-1就解决了
但没解释为什么 怎么就超时了 怎么验证超时时间可以解决
所以我才自己写的 不一定对 不一定能解决你的问题 但验证了我的问题 也解决了
redis keys *
这个操作我现在是不能容忍的 这尼玛 什么都不知道你就查 太浪费时间了
就是这个操作 造成了 (PHP Fatal error: Uncaught RedisException: read error on connection)
我们服务器设置的默认超时时间10秒 但是这了命令的执行时间超过了10秒
服务器数据也比较多吧 没用的数据也挺多的
当然 解决办法还是设置 redis 超时时间 但有些时候我们要弄清 为什么会出现这个问题 这个才是重要的
setOption(Redis::OPT_READ_TIMEOUT,-1);
用了这么久的redis,难道他是单线程的这个知识点都不知道吗(这是领导说我的,确实不知道 现在知道了)
debug sleep 20 //这句话能帮助你复现
你可以自己复现一下 来验证
https://blog.csdn.net/qq_35336004/article/details/80923425
- 关于redis的问题:RedisException with message read error on connection
- phpredis "read error on connection" 的解决办法
- redis的read error on connection错误解决
- redis的read error on connection错误解决
- 解决phpredis 'RedisException' with message 'read error on connection'
- 解决php zf2中redis调用提示'RedisException' with message 'read error on connection'
- 解决'RedisException' with message 'read error on connection'
- brpop read error on connection
- 连接redis时:Connection reset by peer: socket write error&&mysql:Access denied for user 'root'@'localhos
- 虚拟机VMware7.0.0安装CentOS-6.2出现fatal IO error 104 connection reset by peer on xserver:1.0解决
- MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
- redis socket connection timed out 以及read timed out
- Fatal error: Call to a member function read() on a non-object in 错误解决方法
- redis远程连接后,输入命令出现Error:Server closed the connection
- pip install Error - ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read
- // Error: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- The underlying connection was closed: An unexpected error occurred on a send