全部产品
Search
文档中心

云服务器 ECS:网络延迟演练

更新时间:May 25, 2026

网络延迟直接影响应用程序和服务的响应速度,过高的网络延迟会影响用户的使用体验。网络流量增大、线路不稳定等情况都会增加网络延迟。通过此演练场景验证系统在网络延迟时的告警和恢复情况。

使用限制

该演练场景需要使用tc(Traffic Control)工具及其依赖的内核netem组件。

  • 如系统缺少tc工具,请执行sudo yum install -y iproute-tcsudo apt-get install -y iproute2安装,或者执行插件时指定相关参数自动安装。

  • 如系统内核缺少netem组件,如CentOS,可执行sudo yum install kernel-modules-extra安装软件包并重启。

    警告

    注意安装kernel-modules-extra会修改内核版本,请谨慎操作,建议使用其他操作系统的ECS进行演练。

实现原理

本方案使用云助手插件ACS-ECS-NetDelay,使用tc(Traffic Control)工具和netem组件对网卡增加特定规则,实现对Linux内核流量控制。该插件可实现对全局IP或仅针对单个IP进行限制,其中云助手网段100.100.0.0/16不会受到影响。

使用指南

演练准备

请确保您的ECS实例已安装云助手Agent,并且云助手状态正常。具体操作,请参见查看云助手状态及异常状态处理

故障注入

  1. 登录ECS实例。

    具体操作,请参见使用Workbench登录Linux实例

  2. 使用具有sudo访问权限的用户,运行云助手插件ACS-ECS-NetDelay

    sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params inject,dev=eth0,[time=paramA],[jitter=paramB],[target-ip=paramC],[replace=paramD],[duration=paramE],[install-tc=paramF]

    []内为可选故障注入参数,参数说明:

    • dev(必填):需要注入的网卡,如eth0,可执行ifconfig查看当前系统的网卡。

    • time(可选):延迟时间,单位为ms,默认100。

    • jitter(可选):抖动范围,单位为ms,默认10。

    • target-ip(可选):预期产生影响的目标IP,默认为空,表示对所有IP增加延迟,如指定目标IP,则只有该IP会受到影响。

    • replace(可选):如网卡已有设定的tc规则,注入时会产生冲突导致失败。如确定对原有规则进行覆盖,可指定值为true。

    • duration(可选):持续时间,单位为s,默认为300。

    • install-tc(可选):如系统缺少tc工具,可指定该参数为true自动安装,默认false

    显示如下所示时,说明云助手插件ACS-ECS-NetDelay执行成功。

    Will add a 100ms delay and a 10ms jitter to dev: eth0
    Done
  3. 通过ping目标网络,查看故障注入是否成功。

故障恢复

  • 方法一:等待超时自动恢复。

  • 方法二:执行故障恢复命令。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params recover

演练案例

  1. 模拟业务访问目标网络。

    ping www.taobao.com

    本示例以访问www.taobao.com为例进行说明,返回示例如下:

    [ecs-user@iZ0j...         ~]$ ping www.taobao.com
    PING www.taobao.com.danuoyi.tbcache.com (xxx) 56(84) bytes of data.
    64 bytes from xxx: icmp_seq=1 ttl=53 time=11.9 ms
    64 bytes from xxx: icmp_seq=2 ttl=53 time=11.10 ms
    64 bytes from xxx: icmp_seq=3 ttl=53 time=11.8 ms
    64 bytes from xxx: icmp_seq=4 ttl=53 time=11.9 ms
    64 bytes from xxx: icmp_seq=5 ttl=53 time=12.0 ms
    64 bytes from xxx: icmp_seq=6 ttl=53 time=11.9 ms
    64 bytes from xxx: icmp_seq=7 ttl=53 time=12.4 ms
    64 bytes from xxx: icmp_seq=8 ttl=53 time=13.1 ms
    64 bytes from xxx: icmp_seq=9 ttl=53 time=11.8 ms
    64 bytes from xxx: icmp_seq=10 ttl=53 time=11.9 ms
  2. 执行故障注入。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-NetDelay --params inject,dev=eth0,time=1000,jitter=30,duration=120

    对目标IP,增加1000ms延迟,抖动30ms。

  3. 查看注入效果。

    查看网络延迟情况,ping命令在注入后延迟增加1000ms,产生的延迟在1000±30ms范围内。

    64 bytes from xxx: icmp_seq=126 ttl=53 time=11.10 ms
    64 bytes from xxx: icmp_seq=127 ttl=53 time=12.1 ms
    64 bytes from xxx: icmp_seq=128 ttl=53 time=11.9 ms
    64 bytes from xxx: icmp_seq=129 ttl=53 time=1070 ms
    64 bytes from xxx: icmp_seq=130 ttl=53 time=969 ms
    64 bytes from xxx: icmp_seq=131 ttl=53 time=1033 ms
    64 bytes from xxx: icmp_seq=132 ttl=53 time=1039 ms
    64 bytes from xxx: icmp_seq=133 ttl=53 time=1028 ms
    64 bytes from xxx: icmp_seq=134 ttl=53 time=995 ms
    64 bytes from xxx: icmp_seq=135 ttl=53 time=975 ms
    64 bytes from xxx: icmp_seq=136 ttl=53 time=1032 ms
    64 bytes from xxx: icmp_seq=137 ttl=53 time=992 ms
    64 bytes from xxx: icmp_seq=138 ttl=53 time=1015 ms
    64 bytes from xxx: icmp_seq=139 ttl=53 time=1027 ms
    64 bytes from xxx: icmp_seq=140 ttl=53 time=1024 ms
    64 bytes from xxx: icmp_seq=141 ttl=53 time=1046 ms
    64 bytes from xxx: icmp_seq=142 ttl=53 time=982 ms
    64 bytes from xxx: icmp_seq=143 ttl=53 time=1068 ms
    64 bytes from xxx: icmp_seq=144 ttl=53 time=984 ms
    64 bytes from xxx: icmp_seq=145 ttl=53 time=989 ms
  4. 等待故障恢复。

    注入超时后,延迟降低回原有水平,网络恢复。

    64 bytes from xxx                          : icmp_seq=268 ttl=55 time=977 ms
    64 bytes from xxx                          : icmp_seq=269 ttl=55 time=1066 ms
    64 bytes from xxx                          : icmp_seq=270 ttl=55 time=946 ms
    64 bytes from xxx                          : icmp_seq=271 ttl=55 time=1023 ms
    64 bytes from xxx                          : icmp_seq=272 ttl=55 time=928 ms
    64 bytes from xxx                          : icmp_seq=273 ttl=55 time=945 ms
    64 bytes from xxx                          : icmp_seq=274 ttl=55 time=1049 ms
    64 bytes from xxx                          : icmp_seq=275 ttl=55 time=1014 ms
    64 bytes from xxx                          : icmp_seq=276 ttl=55 time=11.8 ms
    64 bytes from xxx                          : icmp_seq=277 ttl=55 time=11.8 ms
    64 bytes from xxx                          : icmp_seq=278 ttl=55 time=11.7 ms
    64 bytes from xxx                          : icmp_seq=279 ttl=55 time=11.7 ms
    64 bytes from xxx                          : icmp_seq=280 ttl=55 time=11.6 ms
    64 bytes from xxx                          : icmp_seq=281 ttl=55 time=11.6 ms
    64 bytes from xxx                          : icmp_seq=282 ttl=55 time=11.6 ms
    64 bytes from xxx                          : icmp_seq=283 ttl=55 time=11.7 ms