ESTABLISHED连接数最反映真实并发负载,即当前活跃的TCP通道数,可用netstat -tn | grep ESTABLISHED | wc -l或ss -tn state established获取;它代表已建立且正在传输数据的连接,是衡量并发压力最直接的指标。

直接用 netstat -tn 查 ESTABLISHED 连接,这是定位并发瓶颈最干净的方式。它不混入监听端口、不解析域名、不显示关闭中连接,结果只保留真正活跃的数据通道。
聚焦 ESTABLISHED 状态才反映真实并发
并发瓶颈看的是“正在通信”的连接数,不是监听数或历史残留。ESTABLISHED 表示三次握手已完成、双向数据正在传输——这才是实际占用资源的连接。
- -t:只筛 TCP,排除 UDP 干扰(如 DNS、NTP)
- -n:跳过 DNS 反向解析,输出快且稳定,避免因解析失败导致卡顿或漏行
- 默认不加 -l 或 -a,天然过滤 LISTEN、TIME_WAIT、CLOSE_WAIT 等非活跃状态
加 -p 关联进程快速定位服务源头
知道有多少连接不够,得知道是谁在建这么多连接。加上 -p 参数就能看到 PID 和程序名,但必须用 sudo 才能读取其他用户的进程信息。
- 命令示例:sudo netstat -tnp | grep ESTABLISHED
- 输出末尾会多一列,如 1234/nginx 或 5678/java
- 若某进程后面跟着大量 ESTABLISHED 行,说明它可能是高并发来源或已出现连接泄漏
用管道组合做轻量级诊断
不用写脚本,几条管道就能回答关键问题:
- 当前总活跃连接数:netstat -tn | grep ESTABLISHED | wc -l
- 某个服务(如 MySQL)对外连了多少台机器:sudo netstat -tnp | grep :3306 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
- 按远程 IP 统计连接频次,找异常客户端:netstat -tn | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
注意替代方案 ss 更高效(尤其高负载时)
netstat 在连接数极多(如上万)时可能变慢甚至卡住。现代系统推荐用 ss 替代:
- 等效命令:ss -tn state established
- 带进程:sudo ss -tnp state established
- ss 基于内核 socket API,不遍历 /proc,响应更快、开销更低


















