商城首页欢迎来到中国正版软件门户

您的位置:首页 >Linux怎么查看当前的TCP连接数量

Linux怎么查看当前的TCP连接数量

  发布于2026-08-11 阅读(0)

扫一扫,手机访问

更稳妥的命令其实是ss -tn state established | wc -l。原因不复杂:ss通常是现代系统里的预装工具,直接和内核打交道,性能更好,也不容易出现误匹配。相比之下,netstat不仅经常默认没装,字段还可能变化,解析速度偏慢,碰上IPv6混在一起时,结果也更容易受影响。

Linux怎么查看当前的TCP连接数量

直接看 ESTABLISHED 数量,才是你真正该关心的“当前 TCP 连接数”——它代表正在通信的活跃连接,不是监听端口,也不是已关闭残留。

怎么快速统计 ESTABLISHED 连接总数

ss 最准也最快,netstat 在新系统上常缺装、慢、且字段对齐不可靠:

  • ss -tn | grep ESTABLISHED | wc -l —— 通用写法,几乎所有现代发行版都预装
  • 如果输出里混着 IPv6 地址(如 [::1]:12345),加 grep -v '[.*]' 过滤:ss -tn | grep ESTABLISHED | grep -v '[.*]' | wc -l
  • 别用 netstat -l,它只列 LISTEN 状态,不是活跃连接;netstat -an | wc -l 则包含所有状态(含 TIME-WAITCLOSED 等),严重高估实际负载

按端口查 ESTABLISHED 连接(比如 80 或 3306)

服务出问题时,得知道是哪个端口扛不住了。注意 sport(源端口)和 dport(目的端口)别写反:

  • 查本机 80 端口上已建立的连接(即 Web 服务正处理的请求):ss -tn state established sport :80 | wc -l
  • 查连到远程 3306 的客户端连接(即本机作为 MySQL 客户端发起的连接):ss -tn state established dport :3306 | wc -l
  • grep 配合 ss 时,末尾加空格防误匹配:ss -tn | grep ':80 ' | grep ESTABLISHED | wc -l(注意 :80 后的空格)

为什么数值看起来很高?先分清状态再判断

ESTABLISHED 高才真危险;TIME-WAIT 多只是四次挥手残留,不等于压力大:

  • 单独看 TIME-WAITss -tn state time-wait | wc -l,持续 >6w 且伴随超时,才需排查短连接滥用或连接未复用
  • 看全量状态分布(比单条 grep 更可靠):ss -tn state all | awk '{print $1}' | sort | uniq -c | sort -nr
  • 重点关注:SYN_RECV 堆积 → 可能 SYN Flood 或服务响应慢;CLOSE_WAIT 堆积 → 应用没调 close(),资源泄漏

别被 ulimit 和 file-max 搞晕:它们不是“当前连接数”,而是上限

查当前连接用 ss;查瓶颈在哪,才需要看限制项:

  • ulimit -n 是当前 shell 进程级文件描述符上限,服务继承它,改了 /etc/security/limits.conf 不生效很常见
  • cat /proc/sys/fs/file-max 是系统总上限,但每条连接还吃内存(内核中约 3.3KB~20KB),4GB 内存撑满 100w 连接几乎不可能
  • sysctl net.netfilter.nf_conntrack_max 只在开了 iptables/NAT 时才起作用,纯直连服务器改它没用

真正需要盯紧的,其实一直都是 ss -tn state established 输出里最先映入眼帘的那个数字。这个数字最能直接反映情况,前提只有一个:别把 LISTENTIME-WAIT 误当成真正的活跃连接。

本文转载于:https://www.php.cn/faq/2972556.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注