查看 ECS 实例的当前连接数,不能一概而论,因为“连接”这个概念在操作系统层、网络层和应用层定义完全不同。你需要根据具体场景选择查看维度。
通常我们关注的“连接数”主要指 TCP 活跃连接数或应用层并发连接数。以下是几种最常用且准确的排查方法,按推荐程度排序:
1. 通过 SSH 登录服务器查看(最直接、最准确)
这是判断服务器当前负载和连接状态最底层的方式。你需要先通过 SSH 连接到你的 ECS 实例。
核心命令:ss 或 netstat
推荐使用 ss,因为它比 netstat 更快,尤其在连接数巨大的时候性能更好。
# 查看所有 TCP 连接的总数
ss -s
# 查看处于 ESTABLISHED(已建立)状态的 TCP 连接总数
ss -t state established | wc -l
# 如果要看特定端口的连接数(比如 Web 服务通常是 80 或 443)
ss -t state established '( dport = :80 or sport = :80 )' | wc -l
解读关键点:
- ESTABLISHED:表示正在通信的有效连接。
- TIME_WAIT / CLOSE_WAIT:这些是半关闭或等待释放的连接。如果这两个状态的数量异常高,说明可能存在连接泄漏或高并发后的资源回收压力,即使总连接数不高,也可能影响性能。
- 注意:Linux 默认的最大文件描述符限制(ulimit -n)往往小于系统能处理的 TCP 连接数上限,查看前确保
ulimit -n设置合理(如调至 65535 或更高)。
2. 通过云监控控制台查看(无需登录,宏观视角)
如果你没有 SSH 权限,或者只想看趋势图,阿里云/腾讯云等主流厂商的云监控提供了现成的指标。
- 路径:进入云控制台 -> 云服务器 ECS -> 监控与报警 -> 实例监控。
- 关键指标:
- 网络流入/流出速率:间接反映流量大小。
- TCP 连接数:部分高级监控套餐或自定义监控插件会提供此数据。
- CPU 使用率 & 内存使用率:虽然不直接显示连接数,但高 CPU 和内存占用往往伴随高连接数带来的上下文切换开销。
注意:原生基础监控通常不包含精确的“当前 TCP 连接数”,这需要你安装云助手 Agent 或使用第三方监控软件(如 Zabbix, Prometheus Node Exporter)采集后推送到云监控平台。
3. 通过应用层日志或工具查看(业务视角)
如果你关心的是 Web 服务(Nginx/Apache/Tomcat)的连接数,操作系统层面的 TCP 连接数可能不够精确,因为一个 HTTP 请求可能复用多个 TCP 连接,或者存在 Keep-Alive 长连接。
- Nginx:开启
stub_status模块,访问/nginx_status页面,可以看到Active connections(活跃连接数)、Accepts(已接受连接)、Handled(已处理连接)等详细数据。 - Tomcat:查看
server.xml中的maxConnections配置,并通过 JMX 或管理界面查看当前活跃线程数和连接池使用情况。 - 数据库(MySQL/Redis):直接使用客户端连接执行
SHOW PROCESSLIST;(MySQL) 或INFO clients(Redis),可以清晰看到当前有多少客户端正在连接并执行操作。
4. 常见问题排查建议
当你发现连接数过高时,不要只盯着数字看,要分析原因:
- 区分来源 IP:使用
ss -t state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 10可以快速找出哪些 IP 建立了最多连接,判断是否是某个恶意 IP 扫端口或 CC 攻击。 - 检查 TIME_WAIT 堆积:如果大量连接处于
TIME_WAIT,考虑优化内核参数:# /etc/sysctl.conf 中添加 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.core.somaxconn = 1024然后执行
sysctl -p生效。 - 防火墙干扰:有时安全组规则过于严格或 iptables 规则复杂,可能导致连接建立缓慢,表现为连接数增长但不稳定。
总结
- 快速诊断:SSH 登录,用
ss -t state established | wc -l看总数。 - 业务监控:依赖 Nginx stub_status 或应用自身监控接口。
- 长期追踪:部署 Prometheus + Node Exporter + Grafana,实现可视化告警。
记住,连接数不是越高越好,也不是越低越好。关键在于是否匹配你的业务预期,以及系统资源(CPU、内存、带宽)是否在健康范围内。
云技术博客