• 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

  • 相关阅读:
    Json概述以及python对json的相关操作
    tcpdump学习(2):基本使用
    tcpdump学习(1):安装
    mysql的expain(zz)
    ubuntu下使用mysql的一点笔记
    mysql的mysqladmin的用法
    mysql的一些工具(系统自带)
    django 分页django-pure-pagination(zz)
    mysql之any,some all(zz)
    Docker Ubuntu容器安装ping(zz)
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9582981.html
Copyright © 2020-2023  润新知