Redis空闲连接被断开排查

举报
yd_293661582 发表于 2026/11/09 10:28:31 2026/11/09
【摘要】 Redis空闲连接被断开,最常见的原因是服务端 timeout 配置或中间网络设备(防火墙/NAT)静默切断空闲连接‌,客户端连接池毫不知情,下次拿到“僵尸连接”才报错。‌‌🎯 先定位是哪一侧断开‌查服务端 timeout‌:执行 redis-cli CONFIG GET timeout。默认300秒,表示空闲N秒后服务端主动关连接。‌查服务端 tcp-keepalive‌:执行 redi...

Redis空闲连接被断开,最常见的原因是服务端 timeout 配置或中间网络设备(防火墙/NAT)静默切断空闲连接‌,客户端连接池毫不知情,下次拿到“僵尸连接”才报错。‌‌

🎯 先定位是哪一侧断开
‌查服务端 timeout‌:执行 redis-cli CONFIG GET timeout。默认300秒,表示空闲N秒后服务端主动关连接。
‌查服务端 tcp-keepalive‌:执行 redis-cli CONFIG GET tcp-keepalive。默认300秒,控制空闲多久后发TCP探测包。
‌看客户端报错类型‌:Connection reset 或 connect timed out 多为连接被服务端或网络设备断开;Could not get a resource from the pool 可能是连接池问题。‌‌
🛠️ 服务端配置建议
‌调整 timeout‌:业务存在长空闲间隔时,设为 0(完全由连接池管理)或调大,如600秒。
‌开启 tcp-keepalive‌:建议设为300,主从节点都配,需改配置文件并重启生效,CONFIG SET 不支持热重载。
‌持久化配置‌:用 CONFIG SET 只改内存,重启丢失,需执行 CONFIG REWRITE 写回配置文件。‌‌
🔧 客户端连接池配置
‌开启空闲检测‌:Jedis 默认 testWhileIdle 和 testOnBorrow 都是 false,建议开启并设置空闲检测周期。
‌Lettuce 专用‌:pingBeforeActivateConnection(true) 每次取连接前自动PING;注意配密码时需在 RedisURI 中带上认证信息。
‌Redisson 专用‌:设置 setHeartbeatInterval(15000),每15秒心跳保活。‌‌

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。