Redis新连接收到max number of clients reached后会被立即关闭。问题可能来自真实并发增长,也可能是连接池未复用、空闲连接未回收或系统文件描述符不足。
先定位连接来源,再决定释放连接还是提高上限;直接调大maxclients可能只是延后下一次故障。

怎样确认当前连接压力
通过已有管理连接执行INFO clients查看connected_clients、blocked_clients等指标,再用CLIENT LIST按地址、用户、空闲时间和连接类型分析来源。无法建立新连接时,应从本机Unix套接字或保留的管理通道操作。
maxclients和文件描述符有什么关系
Redis 2.6及以后可用maxclients配置并发客户端,默认值为10000。官方说明Redis还会检查操作系统软文件描述符限制;若不足以容纳maxclients加内部保留描述符,实际可用上限会被降低。
先处理连接泄漏和空闲连接
检查应用池的最大连接数、空闲超时和重试策略,避免每次请求新建连接。可针对明确的异常来源使用CLIENT KILL,但不要批量关闭复制、发布订阅或正常业务连接。
确需提高上限时怎么改
先核对进程的LimitNOFILE、系统软硬限制和内存余量,再调整maxclients并持久化配置。仅用CONFIG SET临时修改可能在重启后丢失;systemd服务还可能覆盖交互式shell的ulimit。
恢复后的验收标准
观察connected_clients在业务峰值下是否稳定,确认拒绝连接消失,并检查客户端连接复用率与延迟。验收不仅是能重新连接,还要确保连接数不会持续无界增长。
云服务器上的容量建议
进行连接压力测试时,可在萤光云或LightNode准备隔离环境;压力参数应按生产连接池规模逐级增加,不要直接打满实例。
FAQ
问:把maxclients改得越大越好吗?答:不是。每个连接都会消耗描述符和内存,还需考虑客户端缓冲区;应先消除泄漏,再按资源容量设置。
温馨提示
温馨提示:变更前记录INFO、CLIENT LIST摘要和系统限制,保留回滚值,并在业务低峰逐步验证。


