• 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

  • 相关阅读:
    FineReport---数据集
    FineReport----单元格元素(数据列、公式、斜线)
    FineReport---样式
    SQL-修改: 将日期修改为空NULL、修改为空的记录
    sql---字段类型转换,保留小数位数,取日期格式,sql获取当前时间,时间处理
    深入浅出Mqtt协议
    一文了解Redis
    RDBMS关系型数据库与HBase的对比
    Greedysky:C++ 建议用 nullptr 而不是 NULL
    Greedysky:C++11 新特性之强制类型转换static_cast
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15454005.html
Copyright © 2020-2023  润新知