当前位置:首页 > Linux > 正文

怎样查看Linux系统连接数?

查看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  # 查看汇总统计(推荐!)

输出解读

怎样查看Linux系统连接数?  第1张

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实现实时告警,确保业务稳定性。

0