redis :read error on connection

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112947.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 报错:warning: large integer implicitly truncated to unsigned type [-Woverflow]

    报错:warning: large integer implicitly truncated to unsigned type [-Woverflow]函数声明:voidpri_hex(constBYTE*buf,BYTElen,constchar*pname);按照如下方式调用时,报错。pri_hex(buff,READ_NUM,"buff");报错内容如标题。其中READ_NUM是一个宏定义。#defineREAD_NUM1024很明显,是调用函数时,输入的参数,超出函数定义的参数的范围。修改为如…

    2022年7月25日
    41
  • linux route源码,traceroute[通俗易懂]

    linux route源码,traceroute[通俗易懂]traceroute……….\traceroute-1.4a12……….\……………..\aclocal.m4……….\……………..\CHANGES……….\……………..\config.guess……….\……………..\config.sub……….

    2022年6月30日
    29
  • SQL Server 2014 Win7 Win10 安装详解 SQL Server 2017 2019 Linux及SQL TSQL ETL实用案例[通俗易懂]

    SQLServer2014安装图解1SQLServer2014简介SQLServer2014是Microsoft公司推出的关系型数据库管理系统。它用于大规模联机事务处理(OLTP)、数据仓库和电子商务应用的数据库平台;也是用于数据集成、分析和报表解决方案的商业智能平台。2准备2.1环境说明1SQLServer2014安装在WIN764位系统上,当然…

    2022年4月6日
    128
  • C# 字节数组截取

    C# 字节数组截取C#字节数组截取如:byte[]bt=newbyte[]{0,1,2,3,4,5,6,7,8,9};方法一截取位数规则1)截取2位长度的字节数组用BitConverter.ToInt16例如,从第2位开始截取2个字节则BitConverter.ToInt16(bt,2);2)截取4位长度的字节数组用BitConverter.ToInt32例如…

    2022年4月30日
    462
  • 如何简便的解决虚拟机里软件过期问题「建议收藏」

    如何简便的解决虚拟机里软件过期问题「建议收藏」如果你的虚拟机里安装了有期限软件供学习使用,在过期后只能先修改其宿主机操作系统的系统时间才能使用,很不方便。如何简便的解决此过期问题呢?   感谢网友的分享,找到通过修改VMWare虚拟机配置参数的方式,固化每次启动虚拟机时间为国定时间,并禁止其与互联网同步时间,让虚拟机系统一直生活在2014年3月份。具体方法如下:   如果你在vmware(本案例为VMWarePlayer6

    2025年11月14日
    3
  • Java逻辑运算符异或

    Java逻辑运算符异或a b 叫逻辑异或 当 a 和 b 不同时 则结果为 tue 否则为 falsepublicc publicstatic String args System out println 60 gt 20 trueSystem out println 60 gt 20 false

    2025年8月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号