• 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

  • 相关阅读:
    利用Python获取文件类型
    删除目录和文件
    创建目录和空文件
    读取文件内容
    sort方法
    python实例5-表格打印
    ngx.lua中遇到的小问题
    mysql 更改自动增长字段值的重新设定
    全面讲解进程池原理
    测试工程师Docker基础
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9582981.html
Copyright © 2020-2023  润新知