首页/数据/Redis 进阶速查/maxclients 连接上限
性能与排障129 条

maxclients 连接上限

maxclients 限制同时连接的客户端数(默认 10000);达到上限后新连接被拒,rejected_connections 计数上升。

Redis 进阶速查数据更新于 2026-10-13

maxclients 是什么

maxclients 限制 Redis 同时接受的客户端连接数,默认 10000。达到上限后新连接会被直接拒绝,客户端收到 max number of clients reached 之类的错误,同时 INFO stats 里的 rejected_connections 会增长。它不是一个孤立数字:实际生效值还受系统文件描述符上限约束,而每个连接本身都消耗内存。

基本信息

默认值10000
达到上限新连接被拒,客户端收到超限错误
相关指标INFO clients 的 connected_clients、INFO stats 的 rejected_connections
系统依赖服务可打开的文件描述符上限(如 systemd 单元的 LimitNOFILE)
代价每个连接消耗常驻内存与一个文件描述符
配套配置timeout、client-output-buffer-limit、tcp-keepalive

典型使用场景

  • 连接被拒排障:确认是被 maxclients 拦住还是被系统句柄上限拦住
  • 容量规划:按峰值连接数预留内存与句柄,而不是只改一个数字
  • 发布核对:连接池参数调整后复查连接数是否稳定
  • 事故复盘:rejected_connections 一旦增长,说明存在过连接被拒的窗口
  • 容器环境:确认宿主、服务单元与容器三层的句柄限制都已同步放大

最小示例

最小示例
redis-cli CONFIG GET maxclients                 # 当前上限
redis-cli INFO clients | grep connected_clients  # 当前连接数
redis-cli INFO stats | grep rejected_connections # 是否出现过拒绝
redis-cli CLIENT LIST | wc -l                    # 复核连接明细条数
systemctl show redis -p LimitNOFILE              # 服务侧句柄限制(服务名按实际调整)
ulimit -n                                        # 当前 shell 的限制,用于对照

相关指标读法

指标含义异常信号
maxclients允许的最大并发连接数与预期峰值差距过小,缺少余量
connected_clients当前连接数长期贴近上限,随时会被拒
rejected_connections被拒的连接数只要增长就说明发生过连接被拒
LimitNOFILE服务可打开的文件描述符上限小于所需值时配置的上限实际不生效
每连接内存开销client 结构与缓冲占用调大上限前先算内存余量
Redis 启动时会尝试按 maxclients 提高自身的文件描述符上限;若系统或服务单元的限制更小,实际生效值会低于配置,启动日志里通常有对应告警,改完配置要回看日志确认。
调大上限不等于能承载更多流量:连接是常驻内存开销,连接数暴增会同时触发内存告警,真正的解法是连接池复用与闲置回收。

易错点

  • 只调 maxclients 不动系统与服务单元的句柄限制:实际仍被拦住,配置看起来生效其实没变
  • 把连接数问题当容量问题:根因常是连接池失效或短连接风暴,调上限只是掩盖症状
  • 调大上限却不加内存余量:连接常驻开销随连接数线性上升,容易连带触发内存告警
  • 不监控 rejected_connections:业务侧只表现为偶发报错,事后很难定位到连接被拒的窗口
  • 容器里只改宿主限制:容器自身的句柄限制与命名空间隔离要一并确认

数据来源与参考

  • Redis 官方文档:maxclients 配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌