TCP BBR调优及监控
bash
tc qdisc show dev eth0
-
如果输出中没有
fq,执行:bashtc qdisc add dev eth0 root fq # 删除及重新添加 # tc qdisc del dev eth0 root # tc qdisc add dev eth0 root fq # 显示附加状态 # tc qdisc show dev eth0 -
如果输出中已经有
fq,则跳过。
为什么 fq 这么重要? 因为 BBR 的 pacing 需要 fq 来精确调度数据包的发送时间。没有 fq,内核只能粗略 pacing,突发无法消除,造成严重丢包。您之前测试时很多连接的 send 速率远超 pacing_rate,就是 pacing 未生效的信号。
bash
iperf3 -c 141.11.238.199 -p 11 -R -P 4
同时在服务端观察实时指标:
bash
watch -n 1 "ss -tni dst 223.85.220.203 | grep ucp"
判断 pacing 是否生效的关键:
pacing_rate应该与delivery_rate接近,且不再出现send速率远大于pacing_rate的情况。retrans显著下降,cwnd稳定,不再频繁跌至 4。