首页/网络/网络排障速查/ss 按 TCP 状态统计连接

ss 按 TCP 状态统计连接

连接数故障的第一步分解:按状态统计数量。ESTAB 高、TIME-WAIT 高、CLOSE-WAIT 高指向完全不同的根因,先把分布看清楚再谈处置。

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

按状态统计连接

连接数故障的第一步是分解:不要只看总数,而是按 TCP 状态统计数量。已建立状态高说明并发连接多(也可能是泄漏),回收态高说明主动关闭密集且回收慢,被动等待关闭状态高说明本端应用没有正常关闭连接,半连接高则提示对端建连后不回应。不同状态指向完全不同的根因,先看清分布再谈处置,能避免一上手就调内核参数、把应用侧问题掩盖过去。分布与总量要一起看:总量正常但某个状态异常增长,往往比总量超标更早暴露问题。

基本信息

适用平台Linux,连接查询工具由 iproute2 提供,几乎所有现代发行版自带
常见场景连接数超限、端口回收慢、服务无响应、文件句柄耗尽
书写要点状态名称用小写与连字符分隔,去掉表头便于计数
配套命令汇总视图看总体统计,按状态逐项计数用于定位具体状态
采样建议间隔数秒连续采样看趋势,比单次快照更有说服力
替代工具老系统可用传统网络统计工具按状态列聚合,得到等价的分布视图

典型使用场景

  • 服务报连接数超限:先确认是不是被动等待关闭状态堆积
  • 客户端大量建连后本地端口紧张:看回收态分布与可用端口范围
  • 压测或流量突增时延迟上升:看已建立数量与半连接堆积
  • 怀疑连接池泄漏:观察被动等待关闭状态是否单向持续增长
  • 容量评估与基线:定期采样各状态数量,异常时有对照
  • 发布后回归:对比发布前后各状态分布,及时发现连接管理行为变化

一次性状态计数

一次性状态计数
ss -s                                    # 汇总:各类连接与内存统计
ss -Htan state established | wc -l       # 已建立连接数量,-H 去掉表头
ss -Htan state time-wait | wc -l         # 回收态数量
ss -Htan state close-wait | wc -l        # 被动等待关闭:应用未关闭连接的嫌疑
ss -Htan state syn-recv | wc -l          # 半连接:建连未完成
ss -Htan state all | awk '{print $1}' | sort | uniq -c | sort -rn   # 按状态聚合
ss -tanp | grep -c <端口>                 # 某端口上的连接数,进程信息需要权限
watch -n 5 'ss -Htan state close-wait | wc -l'   # 持续观察是否单向增长

状态含义与根因

状态含义常见根因
ESTAB已建立、可传输数据的连接正常并发;持续增长不回落要查连接池与业务并发
TIME-WAIT主动关闭方的正常回收态短连接密集时属正常;耗尽本地端口需优化连接复用
CLOSE-WAIT对端已发关闭报文,本端应用未关闭应用未调用关闭或连接池泄漏,调内核参数无效
SYN-RECV收到建连请求并回应,等待对端确认少量正常;大量堆积说明对端不回应或遭遇扫描
FIN-WAIT-2本端已关闭,等待对端关闭少量正常;堆积说明对端迟迟不关闭
LAST-ACK 与 CLOSING等待最后确认或双方同时关闭少量属正常,长期堆积要查对端异常
被动等待关闭状态的堆积基本都是应用没有关闭连接(连接池泄漏、代码漏关),调内核参数无效,要从代码与连接池入手;把它当作内核问题处理,通常只是延后了故障复发时间。
计数细节:不加去表头参数时表头也会被行数统计数进去,结果比实际多一行,批量核对时容易错位。短时间多次采样看趋势,比单次快照更能说明问题;总量与分布结合起来看,才不会误判。

易错点

  • 用行数统计计数不减表头(差 1),批量核对时错位;加去表头参数可规避
  • 把回收态与被动等待关闭状态混为一谈:前者是主动关闭方的正常状态,后者是被动方迟迟不关闭
  • 只统计总数不看状态分布就直接调内核参数,掩盖真正的应用侧问题
  • 单次采样就下结论,没有观察趋势,无法区分稳态分布与正在恶化
  • 只盯已建立数量做容量判断,忽略回收态与被动等待关闭状态才是端口与句柄耗尽的直接原因

数据来源与参考

  • man 8 ss(iproute2)
  • RFC 9293:TCP 状态机

相关工具

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