首页/网络/协议速查/ESTABLISHED 状态
TCP 与 UDP54 条

ESTABLISHED 状态

连接正常工作的状态:双方可收发数据;排查「连接数暴涨/泄漏」主要看这一态的分布与归属进程。

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

ESTABLISHED 的含义

ESTABLISHED 表示三次握手完成、连接可以双向收发数据的稳定状态。它是排障时最常被统计的状态:连接数暴涨、连接泄漏、fd 耗尽、长连接分布异常,几乎都要先看这一态的规模与归属进程。但「数量大」本身不是问题,关键看它是否与业务预期匹配,以及是否有对应的回收机制。

基本信息

适用平台Linux(ss、netstat)、Windows(netstat -ano、Get-NetTCPConnection)
查看命令ss -tan state established、ss -tanp 可显示进程
相关限制单进程 fd 上限(ulimit -n 与 /proc/PID/limits)直接决定连接天花板
平台差异容器内看到的连接受命名空间限制,宿主机视角可能不同

统计与归属

统计与归属
ss -tan state established | wc -l                  # 总连接数
ss -tanp state established | awk '{print $5}' | sort | uniq -c | sort -rn | head   # 按对端聚合
ss -tnp dport = :443 | head                        # 只看 443 的出向连接
ss -s                                              # 概览:各状态数量汇总

TCP 状态速览

状态含义常见原因
LISTEN服务端等待连接常驻监听,数量应稳定
SYN-RECV半连接待完成握手突增多为扫描或 SYN 洪水
ESTABLISHED连接已建立可收发业务连接,量大需看是否匹配预期
CLOSE-WAIT对端已关闭本端未关应用未关闭连接,堆积则是代码缺陷
TIME-WAIT主动关闭后等待回收短连接高并发下正常且量大

典型使用场景

  • 排查「连接数打满」:确认是业务增长、连接泄漏还是外部扫描
  • 定位连接归属进程,判断是哪个服务在大量建连
  • 配合 ss -s 与内核计数观察状态占比,找异常聚集的状态
  • 容量评估:按连接数推算 fd 限额、内存与 epoll 规模
ESTABLISHED 数量要和进程 fd 限额一起看:ulimit -n 与 /proc/PID/limits 是实际上限。万级长连接属正常,单进程几万连接需要预留 epoll 结构与连接级内存。
大量 CLOSE-WAIT 比大量 ESTABLISHED 更值得怀疑:它说明对端已经关闭而本端应用没有调用关闭,通常是连接池或异常分支没有释放资源。

易错点

  • TIME-WAIT 多就断定连接泄漏:TIME-WAIT 是主动关闭方的正常回收过程,真正要警惕的是 ESTABLISHED 只增不减且集中在少数对端
  • 只看总数不看归属:总量正常但集中在单个对端时,往往是下游慢导致上游连接堆积
  • 忘记 fd 限额与连接数一起调:连接数上去了但 ulimit 没改,表现为「莫名其妙 accept 失败」
  • 在容器里统计连接却与宿主机对不上:命名空间隔离导致两边视角不同,排查要先确认在哪个上下文里数

数据来源与参考

  • man 8 ss
  • RFC 9293

相关工具

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