将"到达的最大客户端数"Redis 错误消息更改为



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

我正在使用 redis 作为我的数据库值的缓存,如果我无法从缓存中获取值,我将从数据库中获取它。 如果我可以在 Redis 中自行配置它,那对我来说将是最佳选择,因为我的代码不必更改以支持该边缘情况。

如果有人有一些关于如何避免此类错误的提示,那也很好:)(我正在使用带有predis包的php脚本)

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

  • 此问题可能与代码中不正确使用PredisClient有关。而是创建一个连接对象一次(singleton),并在进程生存期内使用它。代码可能会在每次向 Redis 发出请求时创建一个对象,并保持所有这些连接处于打开状态。
  • 另一件事值得检查 Web 服务器如何管理php进程。网络服务器(例如apache preforknginx php-fpm) 可能会长时间离开进程,既保持与 Redis 的连接,又耗尽服务器资源(mem、CPU)。
  • 如果上面没有任何内容是真的 - 问题(错误)可能出在predis库中。

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

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

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

最新更新