添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Linux实例网络带宽使用率较高问题的排查与处理

Linux实例网络带宽使用率较高问题的排查与处理

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

Linux 系统中,可以通过 sar、iftop nethogs 等工具查看 Linux 系统的网络流量指标。本文介绍如何使用这些工具来监测网络流量负载。

问题现象

使用 Linux 系统的 ECS 实例时,出现如下现象。

  • 服务响应时长较长或出现访问超时等问题。

  • 通过 ECS 控制台查看实例网络指标监控时,发现网络带宽使用率较高(参考值:当前网络流量带宽使用率>80%,可认为网络流量带宽使用率较高)。

  • 收到网络流量带宽使用率超过设定阈值的告警信息。

排查步骤

使用 sar 工具查看网络接口指标

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 平台上较为全面的系统性能分析工具之一,该工具可以从网络接口层面来分析数据包的收发情况、错误信息等。

使用介绍

使用 sar 来监控网络流量的命令格式如下。

sar -n DEV [interval] [count]
说明

[interval]表示统计间隔,[count]表示统计次数。

使用示例

执行如下命令,使用 sar 1 秒统计一次网络接口的活动状况,连续统计 5 次。

sar -n DEV 1 5

命令执行后会列出每个网卡 5 次的平均数据取值,根据实际情况来确定带宽跑满的网卡名称。

回显结果示例如下,确认是 eth0 通过流量较大,然后执行以下步骤检查具体问题。

Linux 5.10.134-18.al8.x86_64 (iZbpxxxxxxxxxxxxxxxddkZ)  06/03/2025      _x86_64_        (4 CPU)
03:56:50 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:56:51 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:56:51 PM      eth0  55312.00  19209.00  77155.90   1017.14      0.00      0.00      0.00      0.00
03:56:51 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:56:52 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:56:52 PM      eth0  88057.00  30703.00 122923.18   1619.80      0.00      0.00      0.00      0.00
03:56:52 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:56:53 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:56:53 PM      eth0  75517.00  21622.00 105336.02   1162.51      0.00      0.00      0.00      0.00
03:56:53 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:56:54 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:56:54 PM      eth0      2.00      2.00      0.12      0.81      0.00      0.00      0.00      0.00
03:56:54 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:56:55 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:56:55 PM      eth0      2.00      2.00      0.12      0.81      0.00      0.00      0.00      0.00
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0  43778.00  14307.60  61083.07    760.21      0.00      0.00      0.00      0.00

显示结果主要字段说明

  • IFACE:网络接口名称。

  • rxpck/s、txpck/s:每秒接收或发送的数据包数量。

  • rxkB/s、txkB/s:每秒接收或发送的字节数,以 kB/s 为单位。

  • rxcmp/s、txcmp/s:每秒接收或发送的压缩过的数据包数量。

  • rxmcst/s:每秒接收到的多播数据包。

使用 iftop 工具查看主机或 IP 维度的网络接口指标

iftop Linux 系统中一个免费的网卡实时流量监控工具,可以监控包括指定网卡的实时流量、端口连接信息、反向解析 IP 等信息。

使用介绍

iftop 常用命令格式如下。

sudo iftop [-i interface]

interface 表示网络接口名,比如 eth0、eth1 等。如果不通过-i 参数指定接口名,则默认检测第一块网卡的使用情况。

使用示例

  1. 使用 Workbench 终端连接登录 Linux 实例(SSH)

  2. 执行如下命令,安装 iftop 流量监控工具。

    Alibaba Cloud Linux/CentOS/Fedora

    sudo yum install -y iftop

    Ubuntu/Debian

    sudo apt install -y iftop
  3. 执行如下命令,查看详细端口流量占用情况。

    sudo iftop -i eth0 -P
    说明

    -P 参数会显示请求端口。

  4. (可选)使用 iftop 交互模式。

    运行 iftop 命令后会进入交互模式,在交互模式下,您可以通过键盘与工具进行交互,具体操作说明如下。

    常见交互操作命令说明

    按键

    说明

    h

    切换是否显示帮助。

    n

    切换显示本机的 IP 或主机名。

    s

    切换是否显示本机的 host 信息。

    d

    切换是否显示远端目标主机的 host 信息。

    t

    切换显示格式为 2 行、1 行、只显示发送流量或只显示接收流量。

    N

    切换显示端口号或端口服务名称。

    S

    切换是否显示本机的端口信息。

    D

    切换是否显示远端目标主机的端口信息。

    p

    切换是否显示端口信息。

    P

    切换暂停或继续显示。

    b

    切换是否显示平均流量图形条。

    B

    切换计算 2 秒或 10 秒或 40 秒内的平均流量。

    T

    切换是否显示每个连接的总流量。

    i

    打开屏幕过滤功能,输入要过滤的字符。比如输入相应 IP 地址,回车后,屏幕就只显示这个 IP 相关的流量信息。

    L

    切换显示画面上边的刻度,刻度不同,流量图形条会有变化。

    j k

    向上或向下滚动屏幕显示的连接记录。

    1 2 3

    根据右侧显示的三列流量数据进行排序。

    <

    根据左边的本机名或 IP 排序。

    >

    根据远端目标主机的主机名或 IP 排序。

    o

    切换是否固定只显示当前的连接。

    f

    编辑过滤代码。

    !

    调用 Shell 命令。

    q

    退出。

  5. 回显结果说明。

    运行 iftop 命令后,回显信息示例如下。

    2023-02-26_19-30-35

    显示结果主要字段说明如下。

    • 第①部分:带宽使用情况。

    • 第②部分:外部连接列表,即记录了哪些 IP 正在和本机的网络连接。

      • 右侧部分是实时流量信息,分别是该访问 IP 连接到本机 2 秒、10 秒和 40 秒的平均流量。

      • => 表示发送数据, <= 表示接收数据。

    • 第③部分。

      • 第一列:TX 表示发送流量,RX 表示接收流量,TOTAL 表示总流量。

      • 第二列 cum:表示第一列各种情况的总流量。

      • 第三列 peak:表示第一列各种情况的流量峰值。

      • 第四列 rates:表示第一列各种情况 2 秒、10 秒、40 秒内的平均流量。

  6. 执行如下命令,查看端口对应的进程。

    sudo netstat -tunlp | grep [$Port]
    说明

    [$Port]为上一步查看的端口。

    系统显示类型如下。

    tcp        0      0 127.0.0.1:59000         0.0.0.0:*               LISTEN      2598/rapt-daemon
  7. 确认对应服务后,您可以通过停止服务或使用 iptables 工具来对指定地址进行屏蔽或限速,以保证服务器带宽能够正常使用。

使用 Nethogs 工具查看进程维度的网络指标

Nethogs 是一款开源的网络流量监控工具,可用于显示每个进程的带宽占用情况。这样可以更直观定位异常流量的来源。Nethogs 支持 IPv4 IPv6 协议,支持本地网卡及 PPP 连接。

使用介绍

常见用法如下。

sudo nethogs [-i interface]

interface 表示网络接口名,比如 eth0、eth1 等。如果不通过-i 参数指定接口名,则默认检测第一块网卡的使用情况。

使用示例

  1. 使用 Workbench 终端连接登录 Linux 实例(SSH)

  2. 执行如下命令,安装 nethogs 流量监控工具。

    Alibaba Cloud Linux/CentOS/Fedora

    sudo yum install -y nethogs

    Ubuntu/Debian

    sudo apt install -y nethogs
  3. 执行如下命令,查看网卡上进程级的流量信息。

    sudo nethogs eth0
    说明

    nethogs 默认的监控间隔是 1 秒,您可以通过-d 参数来设定监控间隔。例如执行如下 sudo nethogs eth0 -d 5 命令,设定监控间隔为 5 秒。

    回显结果示例如下。

    NetHogs version 0.8.5
        PID USER     PROGRAM                                                       DEV        SENT      RECEIVED       
       1916 root     wget                                                          eth0      709.601   59693.820 KB/sec
          ? root     172.16.0.161:55872-100.100.45.106:443                                     0.295       1.083 KB/sec
       1543 root     /usr/local/aegis/aegis_client/aegis_12_45/AliYunDun           eth0        2.175       0.105 KB/sec
       1031 root     /usr/local/share/aliyun-assist/2.2.3.857/aliyun-service       eth0        0.257       0.077 KB/sec
          ? root     172.16.0.161:55866-100.100.45.106:443                                     0.000       0.000 KB/sec
        899 root     /usr/local/cloudmonitor/bin/argusagent                        eth0        0.000       0.000 KB/sec
          ? root     172.16.0.161:33352-100.100.45.106:80                                      0.000       0.000 KB/sec
          ? root     172.16.0.161:36192-100.100.154.78:80                                      0.000       0.000 KB/sec
          ? root     172.16.0.161:37998-100.100.45.186:80                                      0.000       0.000 KB/sec
       1708 root     /usr/local/aegis/alihips/AliHips                              eth0        0.000       0.000 KB/sec
          ? root     unknown TCP                                                               0.000       0.000 KB/sec
       TOTAL                                                                                 712.071   59695.085 KB/sec

    回显结果说明如下:

    nethogs 监控界面,按 s 可以按照 Sent 列进行排序,按 r 可以按照 Received 列进行排序,按 m 可以切换不同的统计单位显示,例如 kb/s、kb、b、mb。监控界面信息说明如下所示。

    • PID 列表示相应流量关联程序的进程号。

    • USER 列表示相应进程的所属用户。

    • PROGRAM 列表示程序的具体执行路径。

    • DEV 列当前监控的网络接口名称。

    • Sent 列表示相应进程已经发送的数据流量。

    • Received 列表示程序已经接收的数据流量。

  4. 若确定进程是恶意程序,可以通过执行如下命令,终止进程。

    kill -TERM [$Port1]
    说明

    如果是 Web 服务程序,您可以使用 iftop 等工具来查询具体 IP 来源,然后分析 Web 访问日志是否为正常流量。日志分析可以使用 logwatch awstats 等工具进行。

处理网络带宽使用率较高问题

常见网络带宽使用率较高问题的原因及解决方案如下。

问题现象

原因

解决方案

异常用户程序或进程长时间占用大量网络资源,或者非法 IP 地址恶意访问服务,从而导致网络负载较高。

该程序为异常程序或进程,运行时占用过多网络资源。

  • 通过在 Nethogs 工具定位到占用网络资源较多的程序的 PID,并通过如下方式结束进程。

    警告

    在您结束进程前,请务必确保您了解该进程的相关信息,避免因误操作导致您的业务中断。

    通过 sudo kill -15 <PID> 来结束该进程。

  • 使用安全组对非法 IP 地址访问进行拦截,相关操作,请参见 管理安全组规则

  • 如果怀疑进程为恶意程序,您可以对其进行查杀,相关操作,请参见 病毒查杀

正常用户程序或进程长时间占用大量网络资源,或者有指定 IP 地址访问服务,从而导致网络负载较高。

该程序为正常业务程序或进程,运行时占用过多网络资源。

如果实例出现网络性能瓶颈,您可以结合实际情况选择相应的处理策略。

  • 升级实例带宽 相关操作,请参见 修改带宽配置

  • 借助 iptables 工具对指定 IP 或协议的网络请求速率进行限制。

  • 优化业务程序。

单个业务程序或进程偶发网络资源占用较高,但持续时间较短,且发生频率较低。

业务程序需要优化,以解决特殊业务场景(大文件上传、下载)触发的网络资源占用过高问题。

优化业务程序。

没有单个程序或进程占用网络资源,但整体网络负载较高。

当前实例的服务正常运行所需网络资源性能大于实例的网络带宽。

如果实例出现网络性能瓶颈,您可以选择升级带宽 相关操作,请参见 修改带宽配置

相关文档