当前位置:首页>Linux>运维必看!Linux 查看端口流量的4种实用方法,排查网络问题够用了

运维必看!Linux 查看端口流量的4种实用方法,排查网络问题够用了

  • 2026-10-11 06:25:48
运维必看!Linux 查看端口流量的4种实用方法,排查网络问题够用了

做linux运维、服务开发,日常总会遇到这类棘手问题:端口正常监听、连接显示ESTABLISHED,但业务频繁卡顿超时;服务器带宽莫名跑满,却找不到是哪个端口,iftop查看全是未知ip。

其实单纯查看端口监听状态、连接数量毫无意义,只有监测到端口真实的收发流量,才能精准定位网络异常根源。

今天分享一套生产环境实测可用的端口流量排查方案,涵盖系统自带免安装命令、实时流量监控、精准抓包统计,全程实战无废话、适配centos、ubuntu所有主流linux发行版。

一、快速排查:系统自带命令,零安装应急用

1. ss 内核级查看端口流量状态

大多数人只用ss查端口连接,却忽略了它可以查看tcp重传、保活状态,是区分真实活跃连接、僵死假连接最精准的原生命令。

#查看端口连接、流量、保活、重传完整状态ss -it state ESTABLISHED | grep :22

核心字段含义:

  • retrans=0:无数据包重传记录,链路无丢包,端口流量正常,连接真实有效;无重传时该字段默认不展示。

  • retrans>0:仅代表连接历史上发生过丢包并触发过重传,不能直接判定链路断开、无效假连接:

    • 若重传后收到ack、收发队列无堆积、定时器正常:网络短暂波动,连接依旧可用;
    • 若retrans数值高、发送队列持续积压、rto定时器循环重试、长期无对端应答:链路不通,属于僵尸无效假连接。
  • keepalive 计时:服务正常空闲探测,流量链路通畅

  • 无pid、无保活计时:内核残留旧连接,无任何真实业务流量

2. pidstat 绑定端口进程,查看实时io流量

通过端口锁定对应业务进程,监控进程上下行网络收发速率,精准定位偷跑带宽、长期零流量的僵死服务。

#!/bin/bash#适用:centos/ubuntu 系统,依赖lsof、pidstat# ===================== 可修改配置区 =====================MONITOR_PORT="80"   #需要监控的端口,按需修改REFRESH_SEC="1"     #刷新间隔(秒)# =======================================================echo "============================================="echo "端口网络流量监控工具 | 演示脚本"echo "监控端口:$MONITOR_PORT"echo "刷新间隔:${REFRESH_SEC}s"echo "字段说明:rxkB/s=下行流量  txkB/s=上行流量"echo "rx、tx长期为0 代表僵死零流量进程"echo "============================================="#1.获取端口关联pid,去重拼接逗号PID_LIST=$(lsof -t -i:${MONITOR_PORT} 2>/dev/null | sort -u | paste -sd,)#2.容错判断:端口无进程直接退出if [ -z "${PID_LIST}" ];then    echo "错误:端口 ${MONITOR_PORT} 未找到任何关联业务进程"    exit 1fiecho "成功获取关联PID列表:${PID_LIST}"echo "开始实时监控网络流量,按 Ctrl+C 停止"echo "---------------------------------------------"#3.pidstat -w 查看进程网络流量,持续刷新pidstat -w ${REFRESH_SEC} -p ${PID_LIST}

核心字段说明:rxkB/s每秒接收流量、txkB/s每秒发送流量;两项数值长期持续为 0,可判定为空交互僵死连接,进程端口监听正常但无业务数据收发。

二、实时可视化:精准监控单个端口带宽波动

遇到带宽突发爆满、业务间歇性卡顿,需要持续观测端口流量波动时,使用两款轻量化可视化工具,直观查看上下行实时速率。

1. iftop:按端口/IP精准过滤流量

iftop是运维排查端口带宽的神器,可单独监听指定端口,展示瞬时、2秒、10秒、40秒平均带宽,清晰看到所有与本机端口交互的外网IP及流量占用。

安装命令:

# CentOSyum -y install iftop 

日常高频实战应用:

#监听指定网卡,仅监控22端口流量,不解析域名加速展示iftop -i ens33 -PN -f "port 22"

参数说明:

  • -i:指定监听网卡,可通过ip a查询本机网卡名称

  • -P:显示完整端口号,不隐藏端口信息

  • -N:不解析主机域名,避免卡顿、加快刷新速度

2. nethogs:按进程定位流量来源

iftop侧重IP流量展示,而nethogs可以直接关联进程+端口,精准查出具体哪个服务、哪个程序在占用带宽,专治异常流量、恶意进程偷跑带宽问题。

#安装工具yum -y install nethogs #实时监控网卡进程流量,1秒刷新一次nethogs ens33 -d 1

界面直接展示进程名、pid、本地端口、上下行实时流量,流量异常一目了然,无需二次排查。

三、精准统计:tcpdump抓包核算端口总流量

需要精准对账、排查丢包、复盘异常问题时,用tcpdump抓包统计端口流量,数据精准无误差,适合精细化问题排查。

1. 实时抓包观测端口数据包

#监听所有网卡,抓取22端口所有数据包,不解析域名tcpdump -i any port 22 -nn

2. 一键统计指定时段端口总流量

一键抓取10秒流量并自动核算总数据量,无需手动计算,适合快速流量对账:

timeout 10 tcpdump -i any port 22 -w /tmp/port_tmp.pcap && tcpdump -r /tmp/port_tmp.pcap | awk '{s+=$5} END{print "10秒总流量:"s/1024" KB"}'

优势:支持导出pcap文件,可后续用wireshark深度解析异常数据包、丢包、重传问题,是专业级网络排错工具。

四、日常工具选型对照表

整理不同场景对应的最优工具,告别盲目排查,直接按需选用:

  • 应急快速排查、无工具环境:ss + pidstat -w(系统自带、零安装)

  • 实时看端口带宽波动、IP交互流量:iftop

  • 定位具体进程偷跑、异常流量:nethogs

  • 精准对账、抓包排错、短时流量统计:tcpdump

五、实战小结

运维排查网络问题,一定要记住:端口监听、连接状态都是虚的,真实流量才是服务健康的核心标准。

ESTABLISHED状态不代表业务正常,无流量、高重传的连接都是无效僵死连接,也是业务卡顿、超时的隐形元凶。

如果你觉得文章对你的运维工作有帮助,记得点赞加关注。

#运维#linux运维#linux实战#端口流量检测

最新文章

随机文章