美文网首页
Redis "max number of clients rea

Redis "max number of clients rea

作者: 十三流 | 来源:发表于2016-11-12 15:43 被阅读0次

    问题描述

    在Django的websocket连接中,借用Redis实现消息订阅的功能,突然出现问题,websocket端连接不上服务器,在uwsgi日志中发现是握手中连接Redis出错,进而导致握手失败,日志

    ConnectionError: max number of clients reached
    

    解决办法

    在查找资料后,得知主要有2个原因会导致出现此问题

    • Redis允许的连接数太小,并发的客户端超过这个值
    • 客户端未及时关闭,导致Redis的连接数被耗尽

    打开Redis的配置文件,检查maxclients参数,发现为1000,客户端当前应该是不超过1000的,使用命令检查一下连接数

    netstat -an|grep redis | wc -l
    1001
    

    居然有那么多连接,看来自己遇到的问题应该是第二种,应该是客户端的websocket断开后,代码逻辑中没有释放连接,导致运行一段时间后出现这个问题。

    发现问题,解决的办法应该也很简单了
    1,在websocket的connection lost事件中,释放redis
    2,简单一点,给redis添加一个timeout时间,超时后自动释放,当然此方法不适合频繁的Redis连接,毕竟过一段时间Redis才会释放

    相关文章

      网友评论

          本文标题:Redis "max number of clients rea

          本文链接:https://www.haomeiwen.com/subject/yljqpttx.html