运维大神教你如何用iftop和ss命令结合排查带宽占用高的进程

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,全网11W+粉丝博主,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,同时还运营着一个技术交流群,如有需要请站内私信或者联系VX(gylzbk),互相学习共同进步。

一、场景背景

当服务器突发带宽占用过高时,需快速定位异常流量来源。本文通过 iftop(实时流量监控)和 ss(套接字状态分析)的协作,提供一套高效排查流程。


二、工具简介

1. iftop:实时网络流量分析

  • 功能:按连接(IP+端口)监控接口带宽,显示发送/接收流量及峰值,支持过滤和自定义视图。
  • 特点:无需复杂配置,交互界面动态更新,实时反馈流量源头。

2. ss(socket statistics):进程级连接追踪

  • 功能:查询当前网络连接状态(TCP/UDP),可按IP、端口或进程ID过滤,直接关联具体进程。
  • 特点 :比 netstat 更高效,支持直接显示进程名和PID。

三、排查步骤

步骤1:iftop 定位高流量连接

bash 复制代码
sudo iftop -nN -i eth0  
  • 参数说明
    • -n: 直接显示IP而非域名(避免DNS延迟)。
    • -N: 直接显示端口号而非服务名。
    • -i eth0: 指定网卡(如公网接口)。

界面关键信息

  • 中间列表 :展示当前活跃连接的源/目标IP+端口发送/接收流量(单位为bit,注意转换为字节需除以8)。
  • 峰值流量 :底部显示总流量(如 TX Cum: 1.5GB)及实时速率。

操作技巧

  • s/d 隐藏本地/远程主机名,明确流量方向。
  • P 暂停流量统计,筛选关键连接。
  • l 输入IP或端口,过滤特定流量(例如 l 10.0.0.1 检查该IP的连接)。

步骤2:ss 关联进程
场景 :发现某IP(如 10.0.0.5)或端口(如 8080)占用带宽过高。

方法1:通过目标IP定位进程

bash 复制代码
sudo ss -tp src 10.0.0.5  # 查找源IP为10.0.0.5的TCP连接  
sudo ss -tp dst 10.0.0.5  # 查找目标IP为10.0.0.5的TCP连接  

方法2:通过端口定位进程

bash 复制代码
sudo ss -tp 'sport = :8080'  # 查询本地监听8080端口的连接  
sudo ss -tp 'dport = :5432'  # 查询连接到远程5432端口的连接  
  • 关键字段pid/program name 直接显示进程ID及名称。

步骤3:综合分析案例

假设通过 iftop 发现 => 10.0.0.5:80 持续占用10Mbps上行带宽:

  1. 执行 ss -tp dst 10.0.0.5: tcp ESTAB 0 0 192.168.1.10:41020 10.0.0.5:80 users:(("nginx",pid=1234,fd=6))

  2. 确认 PID 1234 对应 nginx 进程,进一步检查配置或终止进程:

    bash 复制代码
    ps -p 1234 -o command  # 查看命令行参数  
    kill -STOP 1234       # 暂停进程验证带宽变化  

四、进阶技巧

1. 组合参数精准过滤

bash 复制代码
# 监控内网192.168.1.0/24网段流量  
sudo iftop -F 192.168.1.0/24 -nN -i eth0  

# ss筛选 established 状态的特定端口连接  
sudo ss -tp 'status established ( src :80 or dst :443 )'  

2. 日志化记录与分析

bash 复制代码
# 将iftop输出存档(需配合 `screen` 或 `nohup`)  
nohup sudo iftop -nN -i eth0 -t >> /var/log/iftop.log &  

# 解析日志提取Top N流量连接  
awk '{print $1, $2, $3}' /var/log/iftop.log | sort -nrk 3 | head -n 10 

五、对比其他工具

工具 优势 适用场景
iftop 实时流量监控,视觉化界面 快速定位IP/端口流量异常
ss 进程级连接细节 关联端口与进程,精准杀指定连接
nethogs 进程级带宽分组 直接显示各进程总带宽消耗

六、常见问题

Q1:iftop 显示单位如何转换?

  • 输出单位为bit/s (如 10Mbit),转为 MB/s 需除以8,即 10 → 1.25MB

Q2:ss 无法显示进程名?

  • 确保内核支持 proc 文件系统进程信息,或检查权限(需 sudo)。

七、总结

iftop + ss 的组合提供了从流量源头到进程定位 的完整闭环,尤其适合动态排查突发流量问题。通过上述方法,可快速响应带宽占用异常,避免服务中断。对于更复杂的进程级监控需求,可进一步使用 nethogs 作为补充。

相关推荐
唐僧洗头爱飘柔952715 分钟前
(云计算HCIP)HCIP全笔记(九)本篇介绍操作系统基础,内容包含:操作系统组成、分类和定义,Linux的特性结构和Linux版本分类
linux·笔记·华为云·云计算·hcip·openeuler·操作系统概述
电鱼智能的电小鱼37 分钟前
EFISH-SBC-RK3588 —— 厘米级定位 × 旗舰算力 × 工业级可靠‌
linux·人工智能·嵌入式硬件·边缘计算
高峰君主43 分钟前
全栈自动化:从零构建智能CI/CD流水线
运维·ci/cd·自动化
yuanlaile1 小时前
Go全栈_Golang、Gin实战、Gorm实战、Go_Socket、Redis、Elasticsearch、微服务、K8s、RabbitMQ全家桶
linux·redis·golang·k8s·rabbitmq·gin
程序员JerrySUN1 小时前
驱动开发硬核特训 · Day 22(上篇): 电源管理体系完整梳理:I2C、Regulator、PMIC与Power-Domain框架
linux·驱动开发·嵌入式硬件
IT运维爱好者1 小时前
Ubuntu 22.04.4操作系统初始化详细配置
linux·运维·服务器·ubuntu
樂5021 小时前
关于 Web 服务器的五个案例
linux·服务器·经验分享
用户217516114382 小时前
【linux】重定向与缓冲区
linux
一键三联啊2 小时前
【FastJSON】的parse与parseObject
linux·前端·python
离凌寒2 小时前
一、linux系统启动过程操作记录
linux