上一篇                     
               
			  怎样查看Linux系统连接数?
- Linux
- 2025-06-12
- 3714
 查看Linux连接数主要使用命令: ,1. 
 
 
netstat -ant | wc -l 统计所有TCP连接 ,2. 
 ss -s 直接显示连接统计摘要(推荐) ,3. 
 netstat -an | grep ESTABLISHED | wc -l 查看已建立连接数 ,4. 
 watch -n 1 "ss -tuna | awk '{print $1}' | sort | uniq -c" 实时监控各状态连接数
在Linux系统中,查看网络连接数是诊断服务器负载、排查网络问题或优化性能的关键操作,本文将通过多种专业方法详细讲解如何查看TCP/UDP连接数,并解释关键指标含义,所有命令均经过实测验证,适用于主流Linux发行版(如CentOS、Ubuntu等)。
连接数基础概念
- 活动连接:正在传输数据的TCP/UDP会话(如Web请求、数据库查询)。
- 监听状态:服务端口等待新连接(如Nginx的80端口)。
- TIME_WAIT:连接关闭后的缓冲状态(防数据包残留),过多可能耗尽资源。
- 重要性:
 连接数异常可能引发端口耗尽、服务拒绝,需定期监控。
查看连接数的4种核心方法
使用 netstat 命令(经典工具)
 
netstat -ant | awk 'NR>2 {print $6}' | sort | uniq -c | sort -nr 
- 参数解析: 
  - -a:显示所有连接(含监听端口)
- -n:禁用域名解析(加速输出)
- -t:仅TCP协议(- -u查看UDP)
 
- 输出示例: 172 ESTABLISHED 30 TIME_WAIT 5 LISTEN 
- 进阶统计:
 统计TCP各状态连接总数:netstat -ant | awk 'NR>2 {print $6}' | sort | uniq -c
使用 ss 命令(高性能替代)
 
ss -s # 查看汇总统计(推荐!)
输出解读:

Total: 189
TCP:   85 (estab 42, closed 25, orphaned 0, timewait 18)
UDP:   4
...- 优势:比netstat更快,直接显示总数、ESTABLISHED、TIMEWAIT等关键数据。
- 按状态筛选: ss -t state established # 仅显示活跃连接 ss -t state time-wait # 仅TIME_WAIT状态 
分析 /proc/net/tcp 文件(底层数据)
 
awk '{print $4}' /proc/net/tcp | sort | uniq -c 
- 状态码对照: 
  - 0A= LISTEN,- 01= ESTABLISHED,- 06= TIME_WAIT
 
- 适用场景:无网络工具时直接读取内核数据。
使用 conntrack 工具(NAT连接追踪)
 
conntrack -L 2>/dev/null | wc -l # 统计NAT转发连接数
- 适用场景:防火墙/网关服务器,需监控经过NAT转发的连接。
关键指标解读与优化建议
| 状态 | 安全范围 | 风险预警 | 优化方案 | 
|---|---|---|---|
| TIME_WAIT | < 1万 | > 3万可能耗尽端口 | 调整 net.ipv4.tcp_max_tw_buckets | 
| ESTABLISHED | 根据服务负载 | 突增可能遭攻击 | 限制单IP连接(如iptables) | 
| LISTEN | 应与服务端口数一致 | 异常增多需排查 | 关闭未用服务 | 
自动化监控脚本示例
创建脚本monitor_conn.sh:
#!/bin/bash # 每5秒记录一次活跃连接数 while true; do date >> /var/log/conn.log ss -s | grep "estab" >> /var/log/conn.log sleep 5 done
运行:nohup bash monitor_conn.sh &
常见问题解答
Q1:TIME_WAIT状态过多如何紧急处理?

# 临时调整内核参数 sysctl -w net.ipv4.tcp_tw_reuse=1 # 复用TIME_WAIT连接 sysctl -w net.ipv4.tcp_fin_timeout=15 # 缩短超时时间
Q2:如何查看某个服务的连接数?
# 查看Nginx服务的连接 ss -t sport = :80 # 按端口筛选 netstat -antp | grep nginx # 按进程名筛选
Q3:连接数暴涨如何定位异常IP?
ss -nt | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
# 输出示例:42次 192.168.1.100 → 此IP可能异常 
引用说明:
- 本文参考Linux内核文档(kernel.org/doc)
ss命令文档(man7.org/linux/man-pages/man8/ss.8.html)- 服务器优化实践基于《Linux Performance Tuning》标准指南
通过以上方法,您可快速掌握Linux连接数监控技巧,建议生产环境中结合Zabbix或Prometheus实现实时告警,确保业务稳定性。
 
 
 
			