加油
努力

如何查看阿里云ECS当前的TCP连接数?

在阿里云ECS(Elastic Compute Service)实例中,查看当前的 TCP 连接数可以通过 Linux 系统命令实现。以下是几种常用的方法:


方法一:使用 netstat 命令(推荐)

netstat -an | grep '^tcp' | wc -l

说明:

  • netstat -an:显示所有 TCP 和 UDP 连接,以数字形式显示地址和端口。
  • grep '^tcp':只筛选出 TCP 类型的连接。
  • wc -l:统计行数,即 TCP 连接总数。

⚠️ 注意:某些系统默认未安装 netstat,可通过安装 net-tools 包来启用:

# CentOS/RHEL
sudo yum install net-tools -y

# Ubuntu/Debian
sudo apt-get install net-tools -y

方法二:使用 ss 命令(更高效,推荐替代 netstat)

ss -tuln | wc -l

或更精确地只统计 TCP 连接:

ss -t -a | wc -l

参数说明:

  • -t:显示 TCP 连接。
  • -a:显示所有状态(包括监听、已建立等)。
  • -u:UDP(不加则只看 TCP)。
  • -l:仅监听端口(可选)。
  • -n:不解析服务名,加快输出。

ss 是现代 Linux 推荐的工具,比 netstat 更快更高效。


方法三:查看特定状态的 TCP 连接数

例如,查看 ESTABLISHED(已建立)的连接数:

ss -t state established | wc -l

或使用 netstat:

netstat -an | grep ESTABLISHED | grep '^tcp' | wc -l

其他常见状态:

  • LISTEN:等待连接
  • TIME-WAIT:连接关闭后的等待状态
  • CLOSE_WAIT:被动关闭等待

示例:查看 TIME-WAIT 连接数

ss -t state time-wait | wc -l

方法四:通过 /proc 文件系统查看(快速但较粗略)

cat /proc/net/sockstat

输出示例:

sockets: used 123
TCP: inuse 45 orphan 0 tw 30 alloc 46 mem 12

其中:

  • inuse:当前使用的 TCP 连接数(已建立或监听)
  • tw:处于 TIME-WAIT 状态的连接数

小结:常用命令汇总

目的 命令
总 TCP 连接数 ss -t -a | wc -l
已建立连接数 ss -t state established | wc -l
监听中的连接 ss -t -l | wc -l
快速查看统计 cat /proc/net/sockstat

建议:
优先使用 ss 命令,性能更好,输出更清晰。

如需监控长期趋势,可结合 Prometheus + Node Exporter 或阿里云自带的 云监控(CloudMonitor) 查看网络连接指标。


如有需要,也可以通过阿里云控制台 → 云监控 → 主机监控 → 网络监控,查看部分连接相关的指标(但实时连接数通常需登录实例查看)。

云服务器