首页/网络/协议速查/CLOSE_WAIT 堆积排查
本包目录(405 条)
HTTP 方法与状态码91 条HTTP 头与缓存70 条DNS 与域名解析60 条
TCP 与 UDP54 条
TLS 与加密50 条IP 与 ICMP37 条邮件与文件传输43 条

CLOSE_WAIT 堆积排查

对方已发 FIN、本端内核已 ACK,但应用还没调用 close:CLOSE_WAIT 数量只增不减说明连接被应用层泄漏。

协议速查网络更新于 2026-10-12

定位泄漏

定位泄漏
ss -tan state close-wait | wc -l
ss -tanp state close-wait | head -20        # 看是哪个进程
ls /proc/<pid>/fd | wc -l                    # 对照 fd 数量
根因代码异常分支没关连接、连接池不回收、线程阻塞导致 finally 未执行
后果fd 耗尽后新连接报 EMFILE/Too many open files
修复方向是应用:给连接加超时、确保 defer/finally 关闭、检查连接池归还逻辑;内核参数无法回收 CLOSE_WAIT。

易错点

  • 看到 CLOSE_WAIT 就调内核是南辕北辙:内核只负责协议栈,close 必须由应用发起

数据来源与参考

  • RFC 9293 §3.3.2
  • man 8 ss

相关工具

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