服务器网络卡顿排查指南:用iftop和nethogs快速定位问题

SYSTEMLinux

一、服务器网络卡顿的常见症状

当您的服务器出现以下情况时,可能正面临网络带宽被占满的问题:

  • SSH登录变得异常缓慢或卡顿
  • 网站访问出现加载超时或响应迟缓
  • 监控系统显示出口带宽已满,但无法确定具体原因

这些问题通常由某个IP地址或系统进程异常占用大量网络带宽引起。快速定位并解决这些问题对保证服务器正常运行至关重要。

二、iftop:实时监控各IP网络流量

工具简介

iftop是一款强大的实时网络流量监控工具,能够按IP地址显示当前网卡的发送与接收速率,特别适合排查"哪个外部IP正在与服务器进行大量数据通信"的问题。

安装方法

Ubuntu/Debian系统:​

sudo apt update
sudo apt install -y iftop

CentOS/RHEL/AlmaLinux/Rocky Linux系统:​

# CentOS 7及以下版本
sudo yum install -y epel-release
sudo yum install -y iftop

# CentOS 8+/AlmaLinux 9等
sudo dnf install -y epel-release
sudo dnf install -y iftop

基本使用命令

  • 监控默认网卡(通常是eth0):
sudo iftop -i eth0
  • 监控无线网卡(适用于笔记本或树莓派):
sudo iftop -i wlan0
  • 仅监控80端口的HTTP流量:
sudo iftop -f "port 80"
  • 仅监控与特定IP(如192.168.1.1)的流量:
sudo iftop -f "dst host 192.168.1.1"

如何确定网卡名称?

如果不确定服务器使用哪个网卡,可以运行以下任一命令查看:

ip addr

ifconfig

输出结果解读

  • 左侧显示​:本地服务器的IP地址
  • 右侧显示​:与之通信的远程IP地址
  • 三列带宽数据​:分别表示2秒、10秒和40秒内的平均传输速率(通常以KB/s或Mb/s为单位)
  • 重点关注​:顶部显示流量最大的连接,这些通常是当前带宽占用的主要来源

三、nethogs:按进程查看带宽占用

工具简介

nethogs是一个按进程(PID)统计网络使用量的工具,能够直接显示是哪个具体程序(如Nginx、Python脚本或可疑的挖矿程序)在消耗大量网络带宽。

安装方法

Ubuntu/Debian系统:​

sudo apt update
sudo apt install -y nethogs

CentOS/RHEL/AlmaLinux/Rocky Linux系统:​

# CentOS 7及以下版本
sudo yum install -y epel-release
sudo yum install -y nethogs

# CentOS 8+/AlmaLinux 9等
sudo dnf install -y epel-release
sudo dnf install -y nethogs

基本使用命令

  • 监控所有网卡的进程流量(默认):
sudo nethogs
  • 仅监控特定网卡(如eth0):
sudo nethogs eth0

输出字段说明

字段说明
PID进程ID,可用于终止异常进程
USER运行该进程的系统用户
PROGRAM程序路径(如/usr/bin/python3)
DEV使用的网络接口
SENT / RECEIVED实时发送与接收速率

操作建议

  1. 发现异常高流量进程后​:
    • 记下该进程的PID
    • 执行以下命令终止该进程:
    kill -9 <PID>
  2. 进一步确认进程详情​:
    ps -p <PID> -f

四、快速诊断网络问题的工作流程

当服务器出现网络卡顿问题时,建议按照以下步骤操作:

  1. 首先运行nethogs,快速识别是哪个系统进程在消耗大量带宽
  2. 如果nethogs无法确定问题,或者需要查看外部连接情况,再运行iftop查看各IP的流量情况
  3. 结合两个工具的结果,可以快速定位问题根源,无论是内部异常进程还是外部异常连接

五、常见问题解答

Q1:我的服务器网卡不是eth0,该怎么办?

答:不同服务器可能有不同的网卡命名规则。运行以下任一命令查看实际网卡名称:

ip addr

ifconfig

常见网卡名称包括ens33、enp0s3、wlan0等。在iftop和nethogs命令中,将eth0替换为您实际的网卡名称即可。

Q2:能否使用这些工具监控Docker或Kubernetes容器的流量?

答:可以。nethogs通常能够显示docker-proxy等容器相关进程。如果需要更深入地监控容器网络,可以进入容器网络命名空间使用iftop进行监控。

Q3:有没有图形化的替代方案?

答:确实存在如Netdata、vnstat+Web UI等图形化监控工具,但iftop和nethogs具有以下优势:

  • 轻量级,对系统资源占用少
  • 无需额外服务,直接运行即可使用
  • 特别适合生产环境,特别是在服务器已经出现性能问题时

六、总结:快速解决服务器网络卡顿问题

工具主要用途适用场景
iftop按IP地址查看实时网络流量排查外部攻击、异常连接、识别高流量IP
nethogs按进程查看带宽占用情况定位内部程序异常,如异常脚本、服务或恶意程序

建议​:将本文收藏,当服务器再次出现网络异常时,只需30秒即可复制相应命令快速诊断问题,恢复服务器正常运行。

通过掌握iftop和nethogs这两个强大而简单的工具,您将能够快速诊断和解决服务器网络卡顿问题,确保服务器稳定运行。

本文发布于 40 天前,内容仍有参考价值