做linux运维、服务开发,日常总会遇到这类棘手问题:端口正常监听、连接显示ESTABLISHED,但业务频繁卡顿超时;服务器带宽莫名跑满,却找不到是哪个端口,iftop查看全是未知ip。
其实单纯查看端口监听状态、连接数量毫无意义,只有监测到端口真实的收发流量,才能精准定位网络异常根源。
今天分享一套生产环境实测可用的端口流量排查方案,涵盖系统自带免安装命令、实时流量监控、精准抓包统计,全程实战无废话、适配centos、ubuntu所有主流linux发行版。
大多数人只用ss查端口连接,却忽略了它可以查看tcp重传、保活状态,是区分真实活跃连接、僵死假连接最精准的原生命令。
#查看端口连接、流量、保活、重传完整状态ss -it state ESTABLISHED | grep :22

核心字段含义:
retrans=0:无数据包重传记录,链路无丢包,端口流量正常,连接真实有效;无重传时该字段默认不展示。
retrans>0:仅代表连接历史上发生过丢包并触发过重传,不能直接判定链路断开、无效假连接:
keepalive 计时:服务正常空闲探测,流量链路通畅
无pid、无保活计时:内核残留旧连接,无任何真实业务流量
通过端口锁定对应业务进程,监控进程上下行网络收发速率,精准定位偷跑带宽、长期零流量的僵死服务。
#!/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}" ];thenecho "错误:端口 ${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,可判定为空交互僵死连接,进程端口监听正常但无业务数据收发。
遇到带宽突发爆满、业务间歇性卡顿,需要持续观测端口流量波动时,使用两款轻量化可视化工具,直观查看上下行实时速率。
iftop是运维排查端口带宽的神器,可单独监听指定端口,展示瞬时、2秒、10秒、40秒平均带宽,清晰看到所有与本机端口交互的外网IP及流量占用。
安装命令:
# CentOSyum -y install iftop
日常高频实战应用:
#监听指定网卡,仅监控22端口流量,不解析域名加速展示iftop -i ens33 -PN -f "port 22"

参数说明:
-i:指定监听网卡,可通过ip a查询本机网卡名称
-P:显示完整端口号,不隐藏端口信息
-N:不解析主机域名,避免卡顿、加快刷新速度
iftop侧重IP流量展示,而nethogs可以直接关联进程+端口,精准查出具体哪个服务、哪个程序在占用带宽,专治异常流量、恶意进程偷跑带宽问题。
#安装工具yum -y install nethogs#实时监控网卡进程流量,1秒刷新一次nethogs ens33 -d 1

界面直接展示进程名、pid、本地端口、上下行实时流量,流量异常一目了然,无需二次排查。
需要精准对账、排查丢包、复盘异常问题时,用tcpdump抓包统计端口流量,数据精准无误差,适合精细化问题排查。
#监听所有网卡,抓取22端口所有数据包,不解析域名tcpdump -i any port 22 -nn

一键抓取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状态不代表业务正常,无流量、高重传的连接都是无效僵死连接,也是业务卡顿、超时的隐形元凶。
如果你觉得文章对你的运维工作有帮助,记得点赞加关注。