服务公告
用 tc 做流量整形:限速与延迟模拟
发布时间:2025-11-26 22:41
## 场景 两类高频需求都指向同一个工具:一是给某个出口限速,防止备份任务把业务带宽吃光,或者在共享环境里给测试流量划一条固定的道;二是在测试环境模拟弱网,验证应用在延迟与丢包下的表现,比如超时与重试逻辑是否真的按预期工作。tc 是内核自带的流量控制工具,不装任何软件就能在云服务器上完成这两件事,规则即时生效,调整起来反馈很快。 ## 步骤清单 给网卡出口加一百毫秒延迟与百分之一丢包,模拟跨境弱链路。 ``` tc qdisc add dev eth0 root netem delay 100ms loss 1% ``` 按端口限速,把发往备份对端的流量压到十兆。 ``` tc qdisc add dev eth0 root handle 1: htb default 10 tc class add dev eth0 parent 1: classid 1:10 htb rate 10mbit ``` htb 提供分层限速,不同 class 可以给不同速率,需要精细分流时再展开。 ## 验证 延迟与丢包配置完,用 ping 对照往返时间是否接近设定值,限速配置完用打流工具验证吞吐是否压在预期档位,两个数字都对上,才算规则真正生效。看当前规则用 tc qdisc show dev eth0,确认配置确实挂在目标网卡上。验证不生效时优先检查两点:规则是否被后续命令覆盖,同一块网卡上后加的根规则会顶掉先前的;限速方向是否搞反——tc 默认管的是出口方向,入口限速要另用入向队列规则。方向搞反的典型表现是本机自测一切正常,对端实测完全不限。 ## 注意事项 netem 的规则对整块网卡生效,会影响该口全部流量,测试环境专机专用更省心;忘删规则导致的线上延迟故障很常见,测试结束立刻清理。 ``` tc qdisc del dev eth0 root ``` 规则重启即失,这点在测试上是优点,在限速上是坑:要长期限速就写进开机脚本,规则跟着网络一起起来。netem 还支持抖动与乱序参数,模拟真实网络时把固定延迟换成带抖动的分布,测试结论更接近实际线路表现。顺云云服务器做应用兼容性测试时,用 tc 先造出目标网络环境再跑用例,比把问题留到生产环境再发现成本低一个量级。上一篇: 服务器采购从买断到租用的演变
下一篇: 长期运营服的降配与升级时机