首页/网络/协议速查/半开连接与死连接检测
TCP 与 UDP54 条

半开连接与死连接检测

一端重启/断电后,另一端内核仍保留 ESTABLISHED(半开连接),不主动探测就永远不知道对端已消失。

协议速查网络更新于 2026-10-12
检测手段TCP keepalive(内核)或应用层心跳(更可控)
keepalive 默认Linux 约 2 小时才开始探测,生产要调小
应用心跳更早发现且可携带业务状态,推荐长连接场景

查看与调整 keepalive

查看与调整 keepalive
ss -tio | grep -i timer
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
云负载均衡/LB 通常有自己的空闲超时(如 900s),后端 keepalive 要比它更短,否则会出现「偶发连接被重置」。

易错点

  • keepalive 探测发的是空 ACK,不携带数据:某些 NAT 仍会过期映射,跨 NAT 长连接建议应用心跳

数据来源与参考

  • RFC 9293 §3.8.4(keepalive)
  • man 7 tcp

相关工具

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