问题现象
-
服务访问异常:业务响应时间显著延长,出现请求超时或服务无法访问的情况。
-
监控指标过高:通过ECS控制台或云监控查看,实例的公网出方向带宽使用率持续高于80%,接近或达到带宽上限或网络连接数突然增加。
-
收到监控告警:收到短信或邮件,提示网络带宽使用率已超过预设的告警阈值。
问题原因
-
异常进程或恶意程序:实例被植入挖矿程序、木马病毒或被用作DDoS攻击的肉机,此类恶意程序会产生大量异常网络流量。
-
网络攻击:实例对外提供服务的端口遭受了如应用层CC攻击、DDoS攻击、暴力破解等恶意访问,导致入带宽被大量无效请求占满。
-
实例网络规格不足:随着业务发展,实例的带宽规格已无法承载正常的业务流量,达到网络性能瓶颈。
解决方案
首先通过sar工具定位流量异常的网卡,然后使用iftop工具(定位消耗带宽的对端IP)或nethogs工具(定位高流量进程)分析网卡流量,最后根据进程和IP性质采取相应措施。
步骤一:定位高流量网卡
通过sar工具确认高流量网卡,明确排查目标。
通过VNC连接登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。
-
统计网络接口数据。
# -n DEV: 报告网络设备统计信息 # 1 5: 每1秒采样一次,共采样5次 sudo sar -n DEV 1 5 -
确定高流量网卡。
重点关注
Average的txkB/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为高流量网卡。
步骤二:分析并处理高流量问题
-
分析网卡流量。
-
iftop:以“连接视角”监控网卡流量,可找出与本机通信流量最大的IP地址和端口。Web服务可通过
iftop定位高流量IP,并结合logwatch等工具分析其Web日志,以判定流量合规性。 -
nethogs:以“进程视角”监控网卡流量,可找出占用网络带宽最大的进程。
iftop工具
-
安装
iftop工具。-
Alibaba Cloud Linux及Centos类型
sudo yum install -y iftop -
Ubuntu及Debian类型
sudo apt update sudo apt install -y iftop
-
-
监控高流量网卡。
<IFACE>请替换为步骤一定位的高流量网卡名称。# -i <IFACE>: 指定监控的网卡为<IFACE> # -P: 显示端口号 (Port) sudo iftop -i <IFACE> -P以高流量网卡名称为
eth0为例,执行sudo iftop -i eth0 -P。 -
分析网卡流量,查找消耗带宽的对端IP。
19.1Mb 38.1Mb 57.2Mb 76.3Mb 95.4Mb iZbp1e5w04k4l xxx => 140.205.11 xxx 4.32Mb 3.17Mb 1.06Mb <= 62.9Kb 47.7Kb 15.1Kb iZbp1e5w04k4l xxx => 140.xxx 0b 164Kb 41.1Kb <= 0b 4.97Kb 1.30Kb iZbp1e5w04k4l xxx => 140.xxx 796Kb 159Kb 40.1Kb <= 15.5Kb 3.10Kb 804b iZbp1e5w04k4l xxx => 140.xxx 0b 89.9Kb 29.2Kb <= 0b 2.97Kb 882b iZbp1e5w04k4l xxx => 140.xxx 0b 83.9Kb 46.4Kb <= 0b 2.55Kb 1.25Kb iZbp1e5w04k4l xxx => 140.xxx 0b 78.9Kb 50.7Kb <= 0b 2.50Kb 1.52Kb iZbp1e5w04k4l xxx => 140.xxx 0b 71.0Kb 89.6Kb <= 0b 2.51Kb 2.85Kb iZbp1e5w04k4l xxx => 140.xxx 0b 66.1Kb 26.2Kb <= 0b 2.29Kb 822b iZbp1e5w04k4lv xxx => 140.xxx 0b 65.6Kb 16.4Kb <= 0b 1.62Kb 416b iZbp1e5w04k4l xxx => 140.xxx 0b 61.1Kb 23.2Kb <= 0b 1.77Kb 656b iZbp1e5w04k4l xxx => 140.xxx 0b 56.2Kb 55.6Kb <= 0b 1.53Kb 1.54Kb iZbp1e5w04k4lv xxx => 140.xxx 0b 52.1Kb 75.3Kb <= 0b 1.65Kb 2.40Kb iZbp1e5w04k4l xxx => 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秒内,本机向IP140.205.11.x的平均出网流量为4.32Mb/s。 -
输入
q,退出iftop工具界面 -
查看端口对应的进程。
<消耗带宽的对端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示例中,本地IP为
172.16.0.x,对端IP为140.205.11.x,对应进程为nginx:worker,PID为2282。
nethogs工具
使用示例
-
安装nethogs工具。
-
Alibaba Cloud Linux及Centos类型
sudo yum install -y nethogs -
Ubuntu及Debian类型
sudo apt update sudo apt install -y nethogs
-
-
监控高流量网卡。
<IFACE>请替换为步骤一定位的高流量网卡名称。# 默认监控间隔为1秒,可通过-d指定监控间隔。 sudo nethogs <IFACE>以高流量网卡名称为
eth0为例,执行sudo nethogs eth0。 -
分析网卡流量。
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,其进程ID为2282,输入q可退出工具交互界面。
-
-
根据进程或对端IP选择解决方案。
-
若定位到的进程(如wget、curl等下载工具,或未知程序)行为可疑,或其通信的对端IP地址为非法IP:
-
终止异常进程:通过
sudo kill -15 <PID>结束异常进程。<PID>请替换为定位的高流量进程PID。重要结束进程前,请务必确认该进程非核心业务进程,避免造成业务中断。
-
拦截非法IP:通过管理安全组规则拦截已知非法IP地址。若遭遇应用层CC攻击且攻击源IP分散,安全组规则的防御效率将显著降低。此时,建议部署Web应用防火墙(Web Application Firewall,简称WAF)进行专项防护。具体操作,请参见为ECS实例接入WAF防御CC攻击。
-
查杀恶意程序:启用云安全中心的病毒查杀功能,对实例执行全面扫描并清除检测到的恶意程序。
-
应对高频DDoS攻击:当遭受高频DDoS或CC攻击时,峰值流量可能超出DDoS基础防护的黑洞阈值,导致云产品进入黑洞状态而无法访问。在此场景下,需启用DDoS高防服务以确保持续可用性。
-
-
若高流量为正常业务进程产生,表明为业务本身的正常需求:
-
升级带宽:当前实例的网络规格已成为瓶颈,应升级实例带宽。
-
优化程序:检查业务代码是否存在可优化之处,例如减少不必要的数据传输、增加缓存、压缩数据等。
-
限制速率:若业务允许,可使用
iptables等工具对特定IP或端口的流量进行限速,避免单个用户或服务占满全部带宽。
-
-
若未存在占用带宽异常的进程,但整体带宽使用率依然居高不下,表明实例承载的总业务量超过了其网络处理能力,应升级实例带宽。
-
后续建议
-
建议对系统指标进行周期性采集以供持续分析,请参见使用atop工具监控Linux系统指标。
-
配置实例监控与告警环境,便于后续风险和异常的通知。