将redis错误消息“max number of client reached”更改为“”

disbfnqx  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(488)

是否可以将错误消息“已达到客户端的最大数目”更改为null或空字符串?
我使用redis作为db值的缓存,如果无法从缓存中获取值,我将从db中获取。如果我能在redis-it-self中配置它,那对我来说是最好的选择,因为我的代码不必为了支持edge的情况而改变。
如果有人对如何避免此类错误有一些建议,那也很好:)(我在predis包中使用php脚本)

nhhxz33t

nhhxz33t1#

错误消息 max number of clients reached 它清楚地表明redis已达到客户端限制,无法服务任何新请求。
这个问题可能与错误使用 Predis\Client 在代码中。而是创建一个连接对象一次( singleton )并在整个进程生命周期中使用它。代码可能会在对redis的每个请求上创建一个新对象,并保持所有这些连接处于打开状态。
另一件事值得一试 php 进程由web服务器管理。web服务器(例如。 apache prefork , nginx php-fpm )可能会让进程长时间保留到redis的连接并耗尽服务器资源(mem、cpu)。
如果上面没有什么是真的-问题(bug)可能在 predis 图书馆。
一句话:代码/web服务器 maxclients 限制。
如果您无法控制代码/web服务器(例如。 nginx ),要减少错误消息的数量,您可以:
增加 maxclients 超过10k(取决于您的redis服务器资源)。这将减少错误消息的频率。
考虑启用(默认禁用)连接 timeout (请谨慎使用,因为您的代码可能会假定连接从不超时)。这将从连接池中释放旧连接。
减少 tcp-keepalive300 秒到少于 timeout . 这将关闭与的连接 dead peers (即使看起来已连接,也无法访问的客户端)。

相关问题