BWH Compass

检查 TCP 拥塞控制并按需启用 BBR

BBR 是 TCP 拥塞控制算法。它可能改变拥塞环境下的传输表现,但不能修复错误路由、服务未启动或所有类型的限速。旧的 OpenVZ/LKL 加速脚本不适用于现代 KVM 的通用配置。

BWH Compass 编辑整理更新于 约 4 分钟阅读

1. BBR 适合解决什么问题#

BBR 是 Linux 可用的一种 TCP 拥塞控制算法,用来决定发送端怎样利用链路带宽。它可能改善某些高延迟或丢包路径的吞吐,但不会改变机房线路、物理距离、套餐限速或月流量,也不是安装后必然提速。

先用带宽测试留一份启用前记录。选择同一网络、同一目标、同一文件,在相近时段比较;仅看 Ping 数字通常看不出拥塞控制带来的变化。

2. 查看当前内核和可用算法#

本文适用于可以管理自己 Linux 内核的实例。旧式容器虚拟化可能由宿主机控制内核;不要为开启 BBR 套用来历不明的内核替换脚本。

bash
uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.core.default_qdisc

如果当前算法已经是 bbr,不需要重复安装。若可用列表没有它,先尝试加载发行版内核自带模块,再查询一次。

bash
sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control

出现模块不存在时,先检查当前系统和内核支持情况。优先使用发行版受支持的内核更新路径,参见系统升级;不要直接卸载仍可启动的旧内核。

3. 保存原值,先做临时切换#

将前一步的拥塞控制和队列规则记下来。确认可用列表含 bbr 后,临时改变默认配置。

bash
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr

tcp_congestion_control 影响后续新建 TCP 连接的默认选择;已有连接不一定立即改变。default_qdisc 是默认排队规则,修改后也不保证现有网卡队列立刻被替换。可用 tc qdisc show 观察实际网卡状态,不要为了让输出一致盲目删除线上队列。

4. 确认效果后再持久化#

临时设置通过后,在 /etc/sysctl.d/ 新建专用文件,例如 90-local-bbr.conf,写入两行。先用 rggrep 查看其他 sysctl 文件是否重复设置同名参数,避免加载顺序把值覆盖。

ini
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
bash
sudo sysctl -p /etc/sysctl.d/90-local-bbr.conf
sysctl net.ipv4.tcp_congestion_control
tc qdisc show

完成一次计划内重启后再检查持久化结果。若业务不能重启,记录待验证项,在维护窗口完成;不必为了教程操作立刻中断服务。

控制台中的重启和状态入口,操作前先保存业务数据
服务商官方知识库公开截图(旧版界面),用于对照功能名称;当前菜单位置可能调整。图中的套餐、IP、端口和日期仅为示例。

5. 如何回退和判断是否保留#

恢复之前记录的拥塞控制算法和队列默认值,并修改或移走自己新增的配置文件。不要删除整个 /etc/sysctl.d/ 目录。再建立新连接,按相同方法测试。

保留 BBR 的依据是自己的业务表现:吞吐更稳定、请求延迟没有恶化、CPU 和流量没有异常。若结果无明显变化,继续检查路由丢包、应用负载和服务器限速。不要把换算法当作所有网络问题的统一修复。

完成后检查

若问题来自 DNS、CPU 或端口拦截,改变拥塞算法不会解决它。

官方资料与相关入口