Redis "max number of clients reached"

问题描述

在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才会释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,487评论 0 82
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,330评论 23 625
  • 一般的导购看到顾客第一句话就是:“你好,欢迎光临!”,其实这句话说错了!第二句话说错的人更多了! “您想要点什么?...
    寻找梦想的春天阅读 370评论 0 0
  • 前言 2017年11月17日的时候写过一篇,时常回想起来认为太过粗糙,不成系统,也没有把自己的心得体会罗列进来。这...
    严肃的蘑菇阅读 360评论 0 0
  • 为什么我们要把生活过得那么难过和纠结, 每个人都有不同的过法和自己理想的生活状态,我想大概都是美好的那个样子吧, ...
    大力v阅读 274评论 0 1