微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将“达到的最大客户端数量” redis错误消息更改为“

如何解决将“达到的最大客户端数量” redis错误消息更改为“

是否可以将错误消息“已达到最大客户端数”更改为空字符串或空字符串?

我将redis用作数据库值的缓存,如果无法从缓存中获取值,我将从数据库获取它。 如果我可以在redis it self中对其进行配置,那对我来说将是最好的选择,因为无需更改代码即可支持这种极端情况。

如果有人对如何避免此类错误有一些提示,那也将很不错:)(我正在使用带有predis软件包的PHP脚本)

解决方法

错误消息max number of clients reached清楚地表明Redis已达到客户端限制,无法处理任何新请求。

  • 此问题可能与代码中Predis\Client的错误使用有关。而是一次创建一个连接对象(singleton),并在整个过程生命周期内使用它。该代码可能会在对Redis的每次请求中创建一个 new 对象,并使所有这些连接保持打开状态。
  • 还有另一件事需要检查Web服务器如何管理php进程。 Web服务器(例如apache preforknginx php-fpm)可能会长时间离开进程,以保持与Redis的连接并耗尽服务器资源(mem,cpu)。
  • 如果上面没有什么是真的-问题(错误)可能在predis库中。

底线:代码/ Web服务器耗尽maxclients的限制。

如果您无法控制代码/ Web服务器(例如nginx),则可以减少以下错误消息的数量:

  • maxclients增加10k以上(取决于您的Redis服务器资源)。这样可以减少错误消息的出现频率。
  • 考虑启用(默认情况下禁用)连接timeout(请谨慎使用,因为您的代码可能会假设连接永远不会超时)。这将从连接池释放旧连接。
  • tcp-keepalive300秒减少到少于timeout。这将关闭与dead peers的连接(即使看起来连接也无法访问的客户端)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。