当前 ESTABLISHED 连接数可用 netstat -tn --no-header | grep ESTABLISHED | wc -l 或 ss -tn state established | wc -l 获取,后者更快更推荐;需按端口或IP统计时用 ss 配合 awk 等工具聚合分析。
netstat 查当前 ESTABLISHED 连接数(最常用)
多数人想看的是“现在有多少个活跃 TCP 连接”,
仍是最快上手的工具,尤其在没装
的旧系统上。
执行
:只统计 IPv4 的已建立连接,忽略监听、关闭中等状态
加
可查 IPv6:
注意
在较新发行版(如 Ubuntu 22.04+、CentOS 8+)默认不预装,需手动
或
输出含表头时会多算一行,用
更稳妥
ss 替代 netstat(推荐用于新环境)
是
的现代替代,速度快、开销低,且默认随
安装,无需额外包。
查 ESTABLISHED 连接:
想看具体进程归属(需 root):
—— 注意
需权限,否则报错
不支持
这种模糊匹配,必须用
,写成
也行,但
就不识别
性能差异明显:在连接数超万时,
耗时通常不到
的 1/5
按端口或 IP 统计连接来源(定位瓶颈)
单纯总数没意义,真正要查的是“哪个端口被打爆了”或“谁连得最多”。这时候得聚合分析。
看本地 80 端口的并发连接数:
统计每个远端 IP 的连接数(前 5 名):
注意
是
输出的第 5 列(对端地址:端口),不同 locale 下列序可能偏移,建议先跑一次
确认格式
如果日志里看到大量
,别急着调内核参数——先确认是不是短连接高频服务(如 HTTP 轮询),这类场景压测时
才是关键指标
cat /proc/net/ 直接读取内核连接表(绕过工具开销)
当系统卡顿、
和
都卡住时,直接读
是唯一可靠方式,但需自己解析。
IPv4 已建立连接数可粗略估算:
注意
包含所有状态,真正
的行,第 4 列是状态码:
表示 ESTABLISHED,
是 LISTEN,脚本处理时得 hex 解析
这个文件无锁、无缓存,适合写监控脚本,但别在高 IO 场景下频繁
,它每次读都触发内核遍历,比
更重
常见误判:看到
行数远大于
输出,大概率是因为包含了
和
,不是工具不准,是统计口径不同
实际查问题时,别只盯着总数。连接数突增往往伴随
堆积或
升高,这些状态才是故障前兆。而
输出的汇总统计,比单条命令更值得扫一眼。
netstatssnetstat -tn | grep ESTABLISHED | wc -l-6netstat -t6n | grep ESTABLISHED | wc -lnetstatsudo apt install net-toolsyum install net-toolsnetstat -tn --no-header | grep ESTABLISHED | wc -lssnetstatiproute2ss -tn state established | wc -lsudo ss -tunp state established | wc -l-pPermission deniedssgrep ESTABLISHEDstate establishedstate estabstate estssnetstatss -tn sport = :80 state established | wc -lss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -5$5ss -tnss -tn | head -2TIME-WAITss -tn state time-wait | wc -lssnetstat/proc/netwc -l (减 1 是去掉表头)/proc/net/tcpESTABLISHED010Acatss/proc/net/tcpssTIME-WAITCLOSE-WAITFIN-WAIT-2SYN-RECVss -s