使用 tc 命令模拟Linux 网络延迟和丢包
背景
在系统中有需要访问公网资源的情况时,需要考虑网络异常的情况,如延迟高,丢包率高的情况,代码中需要做好异常处理。那么,如何在测试的时候模拟网络情况异常情况呢?下面以centos 7.9为例子
步骤
安装 iproute
工具:确保你的 CentOS 上安装了 iproute
,通常它会默认安装。你可以通过以下命令安装:
1 |
|
查找网络接口:使用以下命令列出网络接口,并确定你要控制的接口(如 eth0
、enp0s3
等):
1 |
|
配置网络延迟和丢包:使用 tc
命令配置网络模拟。例如,添加 99% 的丢包率:
1 |
|
请确保将 eth0
替换为你的实际网络接口名称。
- 执行下载测试:进行下载操作,观察在网络中断条件下的表现。
恢复正常网络:测试完成后,清除网络配置:
1 |
|
通过这些步骤,你可以在宿主机上有效地控制网络条件,模拟下载过程中的网络中断。如果有任何问题,确保检查接口名称和执行权限。
结尾
如果服务是以docker容器的方式运行,通常在容器中直接下载tc工具,模拟网络异常是不生效的,因为容器中的网络接口是虚拟出来的,你只能把配置虚拟网络接口,但是最终还是会通过docker0转发给宿主机,等于说还是用的宿主机的网络,不控制宿主机的网络是不能实现效果的!
使用 tc 命令模拟Linux 网络延迟和丢包
https://luffy997.github.io/2024/10/30/使用-tc-命令模拟Linux-网络延迟和丢包/