首页/网络/网络排障速查/长连接保活与中间设备超时匹配

长连接保活与中间设备超时匹配

长连接被静默回收是『闲置后第一个请求失败』的经典根因:应用心跳间隔必须小于 NAT/LB 的空闲超时,必要时同时调小内核 keepalive。

网络排障速查网络更新于 2026-10-12

现状核对与设置

现状核对与设置
ss -tino state established '( dport = :443 )' | head
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
# 建议:应用层心跳 < 中间设备空闲超时的一半
# 例:NAT 超时 350s → 心跳 120s
# 内核侧(临时验证):sysctl -w net.ipv4.tcp_keepalive_time=120
内核默认7200s 才发第一个 keepalive,远大于常见的 300-900s NAT/LB 空闲超时
对策1应用层心跳/HTTP2 PING 保活(最可靠)
对策2调小 tcp_keepalive_time/intvl,并让中间设备也保活
指纹闲置一段时间后首个请求超时/被 reset,随后恢复正常
单向心跳不够:部分设备只统计双向流量,建议在客户端发起并能收到响应,才算真正刷新会话。

易错点

  • 依赖系统默认 keepalive 保护长连接,实际中间设备早回收了会话
  • 心跳间隔大于中间设备超时,形同虚设

数据来源与参考

  • RFC 1122 §4.2.3.6:TCP Keep-Alive
  • Linux 内核文档:tcp_keepalive_*

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌