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

change the 'max number of client reached' redis error message to ''

是否可以将错误消息 'max number of client reached' 更改为 null 或空字符串?

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

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

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

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

底线:code/web 服务器耗尽 maxclients 限制。

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

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