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

更新时间:
复制 MD 格式

问题现象

  • 服务访问异常:业务响应时间显著延长,出现请求超时或服务无法访问的情况。

  • 监控指标过高:通过ECS控制台或云监控查看,实例的公网出方向带宽使用率持续高于80%,接近或达到带宽上限或网络连接数突然增加。

  • 收到监控告警:收到短信或邮件,提示网络带宽使用率已超过预设的告警阈值。

问题原因

  • 异常进程或恶意程序:实例被植入挖矿程序、木马病毒或被用作DDoS攻击的肉机,此类恶意程序会产生大量异常网络流量。

  • 网络攻击:实例对外提供服务的端口遭受了如应用层CC攻击、DDoS攻击、暴力破解等恶意访问,导致入带宽被大量无效请求占满。

  • 实例网络规格不足:随着业务发展,实例的带宽规格已无法承载正常的业务流量,达到网络性能瓶颈。

解决方案

首先通过sar工具定位流量异常的网卡,然后使用iftop工具(定位消耗带宽的对端IP)或nethogs工具(定位高流量进程)分析网卡流量,最后根据进程和IP性质采取相应措施。

步骤一:定位高流量网卡

通过sar工具确认高流量网卡,明确排查目标。

  1. 通过VNC连接登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。

  2. 统计网络接口数据。

    # -n DEV: 报告网络设备统计信息
    # 1 5: 每1秒采样一次,共采样5次
    sudo sar -n DEV 1 5
  3. 确定高流量网卡。

    重点关注AveragetxkB/s(平均出网带宽)。通过对比,找出数值最高的IFACE (网卡名称)。

    rxkB/s表示平均入网带宽速率。
    Linux 5.10.134-19.1.al8.x86_64 (iZbp1e5xxx)                    11/14/2025      _x86_64_        (2 CPU)
    04:11:13 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    04:11:14 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:14 PM      eth0    317.00    580.00     21.36    933.00      0.00      0.00      0.00      0.00
    04:11:14 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:14 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    04:11:15 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:15 PM      eth0    328.00    582.00     22.34    943.08      0.00      0.00      0.00      0.00
    04:11:15 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:15 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    04:11:16 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:16 PM      eth0    352.00    595.00     24.08    935.58      0.00      0.00      0.00      0.00
    04:11:16 PM      eth1      1.00      1.00      0.04      0.04      0.00      0.00      0.00      0.00
    04:11:16 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    04:11:17 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:17 PM      eth0    347.00    581.00     23.58    943.02      0.00      0.00      0.00      0.00
    04:11:17 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:17 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
    04:11:18 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:11:18 PM      eth0    367.00    623.00     24.98    952.79      0.00      0.00      0.00      0.00
    04:11:18 PM      eth1      0.00      0.00      0.00      0.00      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    342.20    592.20     23.27    941.49      0.00      0.00      0.00      0.00
    Average:         eth1      0.20      0.20      0.01      0.01      0.00      0.00      0.00      0.00

    示例中,eth0网卡的txkB/s最高,因此eth0为高流量网卡。

步骤二:分析并处理高流量问题

  1. 分析网卡流量。

    • iftop:以“连接视角”监控网卡流量,可找出与本机通信流量最大的IP地址和端口

      Web服务可通过 iftop 定位高流量IP,并结合 logwatch 等工具分析其Web日志,以判定流量合规性。
    • nethogs:以“进程视角”监控网卡流量,可找出占用网络带宽最大的进程。

    iftop工具

    1. 安装iftop工具。

      • Alibaba Cloud LinuxCentos类型

        sudo yum install -y iftop
      • UbuntuDebian类型

        sudo apt update
        sudo apt install -y iftop
    2. 监控高流量网卡。

      <IFACE>请替换为步骤一定位的高流量网卡名称。

      # -i <IFACE>: 指定监控的网卡为<IFACE>
      # -P: 显示端口号 (Port)
      sudo iftop -i <IFACE> -P
      以高流量网卡名称为eth0为例,执行sudo iftop -i eth0 -P
    3. 分析网卡流量,查找消耗带宽的对端IP

      19.1Mb             38.1Mb             57.2Mb             76.3Mb             95.4Mb
      iZbp1e5w04k4l xxx                  => 140.205.11 xxx                         4.32Mb  3.17Mb  1.06Mb
                                         &lt;=                                        62.9Kb  47.7Kb  15.1Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b   164Kb  41.1Kb
                                         &lt;=                                            0b  4.97Kb  1.30Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                 796Kb   159Kb  40.1Kb
                                         &lt;=                                         15.5Kb  3.10Kb   804b
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  89.9Kb  29.2Kb
                                         &lt;=                                            0b  2.97Kb   882b
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  83.9Kb  46.4Kb
                                         &lt;=                                            0b  2.55Kb  1.25Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  78.9Kb  50.7Kb
                                         &lt;=                                            0b  2.50Kb  1.52Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  71.0Kb  89.6Kb
                                         &lt;=                                            0b  2.51Kb  2.85Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  66.1Kb  26.2Kb
                                         &lt;=                                            0b  2.29Kb   822b
      iZbp1e5w04k4lv xxx                 =&gt; 140.xxx                                    0b  65.6Kb  16.4Kb
                                         &lt;=                                            0b  1.62Kb   416b
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  61.1Kb  23.2Kb
                                         &lt;=                                            0b  1.77Kb   656b
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  56.2Kb  55.6Kb
                                         &lt;=                                            0b  1.53Kb  1.54Kb
      iZbp1e5w04k4lv xxx                 =&gt; 140.xxx                                    0b  52.1Kb  75.3Kb
                                         &lt;=                                            0b  1.65Kb  2.40Kb
      iZbp1e5w04k4l xxx                  =&gt; 140.xxx                                    0b  52.0Kb  13.0Kb
                                         <=                                            0b  1.42Kb   363b
      ─────────────────────────────────────────────────────────────────────────────────────────────────────
      TX:           cum:   80.9MB   peak:  14.3Mb                          rates:  7.15Mb  6.52Mb  11.2Mb
      RX:                  1.91MB           440Kb                                   146Kb   154Kb   276Kb
      TOTAL:               82.8MB          14.6Mb                                  7.30Mb  6.67Mb  11.4Mb

      实时流量信息由高到低排列,其中,=> 符号的流量信息,即本机向对端IP发送数据的速率。示例中在过去2秒内,本机向IP 140.205.11.x 的平均出网流量为 4.32Mb/s

    4. 输入q,退出iftop工具界面

    5. 查看端口对应的进程。

      <消耗带宽的对端IP>通过上一步获取。

      sudo netstat -antp | grep <消耗带宽的对端IP>

      示例输出如下。

      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker
      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker
      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker
      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker
      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker
      tcp    0    172.16.0.xxx    xxx    140.205.11.xxx    xxx    ESTABLISHED    2282/nginx: worker

      示例中,本地IP172.16.0.x,对端IP140.205.11.x,对应进程为nginx:worker,PID2282

    nethogs工具

    使用示例

    1. 安装nethogs工具。

      • Alibaba Cloud LinuxCentos类型

        sudo yum install -y nethogs
      • UbuntuDebian类型

        sudo apt update
        sudo apt install -y nethogs
    2. 监控高流量网卡。

      <IFACE>请替换为步骤一定位的高流量网卡名称。

      # 默认监控间隔为1秒,可通过-d指定监控间隔。
      sudo nethogs <IFACE>
      以高流量网卡名称为eth0为例,执行sudo nethogs eth0
    3. 分析网卡流量。

      NetHogs version 0.8.5
        PID USER     PROGRAM                                                        DEV        SENT      RECEIVED
       2282 nginx    nginx: worker process                                                   696.898    19.289 KB/sec
      15823 root     sshd: root@pts/3                                                         0.773     0.231 KB/sec
          ? root     172.16.xxx.54.137:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.26.209:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.45.106:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.4.191:80                                                      0.000     0.000 KB/sec
          ? root     172.16.xxx.154.78:80                                                     0.000     0.000 KB/sec
       1749 root     /usr/local/cloudmonitor/bin/argusagent                                    0.000     0.000 KB/sec
          ? root     172.16.xxx.54.135:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.26.207:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.4.217:80                                                      0.000     0.000 KB/sec
          ? root     172.16.xxx.89.115:80                                                     0.000     0.000 KB/sec
       6215 root     /opt/aliyun-security/ilogtail/ilogtail-aliyun-security                    0.000     0.000 KB/sec
          ? root     172.16.xxx.154.78:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.83.69:80                                                      0.000     0.000 KB/sec
          ? root     172.16.xxx.54.132:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.26.210:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.4.217:80                                                      0.000     0.000 KB/sec
          ? root     172.16.xxx.89.113:80                                                     0.000     0.000 KB/sec
          ? root     172.16.xxx.154.78:80                                                     0.000     0.000 KB/sec
       1806 root     /usr/local/aegis/aegis_client/aegis_12_61/AliYunDun                       0.000     0.000 KB/sec
       2810 root     /usr/local/aegis/alihips/AliHips                                         0.000     0.000 KB/sec
       6172 root     /opt/aliyun-security/rapt-daemon/rapt-daemon                              0.000     0.000 KB/sec
          ? root     unknown TCP                                                               0.000     0.000 KB/sec

      其中,SENT 表示发送的流量信息,即本机向对端IP(接收方)发送数据的速率。示例中流量占用最高的进程为nginx:worker process,出网流量约为696KB/s,其进程ID2282,输入q可退出工具交互界面。

  2. 根据进程或对端IP选择解决方案。

    • 若定位到的进程(如wget、curl等下载工具,或未知程序)行为可疑,或其通信的对端IP地址为非法IP:

      • 终止异常进程:通过sudo kill -15 <PID>结束异常进程。<PID>请替换为定位的高流量进程PID。

        重要

        结束进程前,请务必确认该进程非核心业务进程,避免造成业务中断。

      • 拦截非法IP:通过管理安全组规则拦截已知非法IP地址。若遭遇应用层CC攻击且攻击源IP分散,安全组规则的防御效率将显著降低。此时,建议部署Web应用防火墙(Web Application Firewall,简称WAF)进行专项防护。具体操作,请参见ECS实例接入WAF防御CC攻击

      • 查杀恶意程序:启用云安全中心的病毒查杀功能,对实例执行全面扫描并清除检测到的恶意程序。

      • 应对高频DDoS攻击:当遭受高频DDoSCC攻击时,峰值流量可能超出DDoS基础防护的黑洞阈值,导致云产品进入黑洞状态而无法访问。在此场景下,需启用DDoS高防服务以确保持续可用性。

    • 若高流量为正常业务进程产生,表明为业务本身的正常需求:

      • 升级带宽:当前实例的网络规格已成为瓶颈,应升级实例带宽

      • 优化程序:检查业务代码是否存在可优化之处,例如减少不必要的数据传输、增加缓存、压缩数据等。

      • 限制速率:若业务允许,可使用iptables等工具对特定IP或端口的流量进行限速,避免单个用户或服务占满全部带宽。

    • 若未存在占用带宽异常的进程,但整体带宽使用率依然居高不下,表明实例承载的总业务量超过了其网络处理能力,应升级实例带宽

后续建议