首页/数据/Redis 进阶速查/连接风暴的处理
性能与排障129 条

连接风暴的处理

连接风暴表现:连接数陡增、rejected_connections 上升、内存与 CPU 双升;处理:限流入口、排查重连逻辑、检查 LB 与连接池配置。

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

连接风暴是什么

连接风暴的表现是连接数陡然上升、rejected_connections 增长,内存与 CPU 同时被推高。常见来源是客户端重试没有退避、负载均衡抖动或连接池配置失误。处理顺序是先稳住服务、再定位风暴来源、最后修正重试策略,否则风暴会按固定周期重复出现。

基本信息

信号connected_clients 陡增、rejected_connections 上升
常见来源客户端重连风暴、负载均衡抖动、连接池配置失误
止血手段入口限流、回收异常连接、谨慎评估后调整连接上限
排查工具CLIENT LIST 按连接名与来源地址聚合
根治方向重试退避、连接池参数、实例规格与分片

典型使用场景

  • 故障止血:先判断是否为客户端集体重连所导致
  • 容量核对:连接数与 maxclients 的水位是否留有余量
  • 连接池评审:池大小与实例的承载能力是否匹配
  • 负载均衡核查:健康检查频率过高同样会造成建连压力
  • 客户端退避:确认重试是否带指数退避与随机抖动
  • 发布评估:应用实例扩容瞬间的连接增量是否被算过

采集与处置

采集与处置
redis-cli INFO clients                                   # 当前连接数
redis-cli INFO stats | grep -E 'rejected_connections'    # 被拒绝的连接计数
redis-cli INFO stats | grep -E 'total_connections_received'  # 累计建连,看速率变化
redis-cli CLIENT LIST TYPE normal | wc -l                # 普通连接数量
redis-cli CLIENT LIST | grep -o 'name=[^ ]*' | sort | uniq -c | sort -rn  # 按连接名聚合
redis-cli CLIENT KILL TYPE pubsub SKIPME yes             # 处置特定类型连接的示例
redis-cli CONFIG GET maxclients                         # 连接上限,评估余量

指标读法

指标含义异常表现
connected_clients当前连接数陡增或长期贴着上限
rejected_connections被拒绝的连接数持续增长说明容量不足
total_connections_received累计建连次数速率突增说明重连风暴
blocked_clients阻塞中的连接数与连接数同时上涨要一并看
maxclients连接数上限要注意文件描述符的配套余量
连接数不是越多越好:每个连接都要占内存与文件描述符,实例的真实余量要靠压测得出,而不是按理论上限估算。
风暴期先稳服务再复盘:只清连接属于止血,重试策略不改,同样的风暴会在下一个故障点再次出现。

易错点

  • 客户端重试不带退避,故障时形成风暴二次碾压,恢复时间被拉长
  • 只清连接不改重试策略,风暴按周期反复出现
  • 把连接被拒当成实例故障,忽略连接上限与文件描述符设置
  • 排查时不看连接名与来源地址,无法定位是哪个应用在制造连接

数据来源与参考

  • Redis 官方实践:连接问题处理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌