前言
最近在测试一些异步事件时,比如算法建图文件异步下发,由于环境的网速较快,正常下发流程会在几秒内结束,当我们想在这下发过程中进行一些异常中断,比如在下发时候停止算法容器,平台会是怎样的处理方式;另外一种可能的场景是,由于http是有超时时间的,但是开发往往调用接口都是默认有网速很好的前提,如果在弱网环境测试,可能会发生一些超时、断联等情况...因此需要借助一些工具来降低环境的网卡速率,进行弱网&限速&下发场景下的中断测试。
Wonder Shaper 是一个允许用户限制一个或多个网络适配器带宽的脚本。它通过使用 iproute 的 tc 命令来实现,但大大简化了操作,允许在高速(十兆位以上)链路上更好地管理带宽,同时实施了改进的入口整形方法,并且能够限制向下或向上(两者仍然是可能的)。更加方便的是,该软件不强制依赖安装,只需将zip拷入虚机便可直接运行。
获得
zip包访问git页面下载zip包GitHub - magnific0/wondershaper: Command-line utility for limiting an adapter's bandwidth
将zip包拷入目标虚机并解压,会获得如下目录
安装(可选)
可通过脚本形式运行“./wondershaper -a eth0 -u 100 -d 100”执行,也可通过如下步骤将wondershaper安装为本地服务:
sudo make install
可以通过输入以下内容来验证 wondershaper 是否已正确安装:
which wondershaper
执行以下命令,可以让wondershaper 在每次系统启动时都自动开始服务,并且按照wondershaper.conf配置文件中的参数来运行任务,该配置文件的路径为:
sudo vim /etc/systemd/wondershaper.conf
sudo systemctl enable wondershaper.service
sudo systemctl start wondershaper.service
临时测试不建议将限制网速加入开机自启,如果忘关会对后续环境问题的定位造成很大难度
使用(非安装脚本形式)
首先需要找到网络接口的名称,通过以下几个命令都可以查询到网卡的详细信息:
ip addr
route
ifconfig
在确定网卡名称以后,就可以按照以下的命令限制网络带宽:
./wondershaper -a <adapter> -d <rate> -u <rate>
例如,如果网卡名称是eth0,并且需要把上行、下行速率分别限制为 1024 Kbps 和 512 Kbps,就可以执行以下命令:
./wondershaper -a eth0 -d 1024 -u 512
如果要对网卡解除网络带宽的限制,只需要执行:
./wondershaper -c -a eth0
部分参数含义如下:
-
-h显示帮助
-
-a <adapter>设置适配器
-
-d <rate>设置最大下载速率(以 Kbps 为单位)和/或
-
-u <rate>设置最大上传速率(以 Kbps 为单位)
-
-p使用 /etc/systemd/wondershaper.conf 中的预设配置
-
-f <file>使用替代预设文件
-
-c清除适配器的限制
-
-s显示适配器的当前状态
注意
最小的上行带宽和下行带宽要慎重设置(建议-u和-d均不小于200kbps),当设置过小时,虚机会相当于网络断联,导致ssh断联,此时只能通过虚拟化平台重启虚机来清除Wonder Shaper进程,从而放开带宽。如果已经将限速配置加入系统启动项,则会上述规避方法也失效,只能通过TCF的管理页面中、通过控制台进入虚机,放开网速限制。