django redis error: max number of clients reached

在遇到Redis达到最大客户端连接数的问题时,本文探讨了三种解决方案:重启Redis、手动关闭连接和设置连接超时时间。最终提议使用连接池管理Redis实例,确保资源的有效利用。

 在日常测试中,突然遇到这么一个错误,怎么也过不去了。

查询了错误栈,发现是redis错误。

而这个redis错误是说超过了最大客户端连接数,我们又没多少redis-client 怎么会超过最大数呢。

OperationalError(u'max number of clients reached',)

然后用 client list

发现特别多的连接,而且有好多都是ttl ping等简单的操作。

在这些操作后没有执行主动关闭连接操作,导致redis一直保持着连接,等待client重新连接。

所以说 解决的关键就在于关闭连接。

我们有3个方案:

1.重启redis

2.在连接完成后手动关闭redis连接

3.设置redis连接超时时间

最后我们选择了1,因为操作简单。哈哈哈哈~

当然了

1 操作简单,也不会丢失数据,但只能临时解决问题,之后还是会有同样的问题

2 需要排查所有没有自动关闭连接的地方,然后增加自动关闭的代码

3 简单粗暴,只要超时的就会给关闭。但是不适用有订阅/发布的项目,因为订阅/发布的redis大部分时间都是空闲的,设置超时时间所有的订阅发布就会失效。

我觉得 我们的项目里应该用一个连接池,就是所有的redis实例 都用单例模式,这样不就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天马行空波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值