Linux 开启 BBR 常见问题排查:没有 bbr、权限不足、重启失效怎么办

July 7, 2026
整理 Linux 开启 TCP BBR 最常见的问题:available_congestion_control 没有 bbr、permission denied、重启失效、ss 看不到 bbr、qdisc 显示 mq。

Linux 开启 BBR 常见问题排查:没有 bbr、权限不足、重启失效怎么办

更新日期:2026-07-07

BBR 的配置命令很短,但实际环境里经常会遇到权限、内核、容器和验证方式的问题。下面按现象排查。

available_congestion_control 里没有 bbr

先检查:

uname -r
sysctl net.ipv4.tcp_available_congestion_control
find /lib/modules/$(uname -r) -name 'tcp_bbr*' 2>/dev/null

可能原因:

  • 内核太老。
  • 当前内核没有编译 tcp_bbr。
  • 云厂商安全镜像裁剪了模块。
  • 容器内看不到宿主机模块。

优先升级到发行版官方支持内核,不要随便安装来路不明的一键内核。

sysctl: permission denied

这通常说明你没有权限修改内核参数。常见于:

  • 非 root 用户没有 sudo。
  • LXC / OpenVZ 容器受宿主机限制。
  • Kubernetes 容器没有开放对应 sysctl。

如果是容器,应该在宿主机配置 BBR,而不是在容器里反复尝试。

重启后失效

只执行 `sysctl -w` 是临时修改。请写入:

sudo tee /etc/sysctl.d/99-bbr.conf >/dev/null <<'EOF'
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
sudo sysctl --system

确认文件名以 `.conf` 结尾。

ss 看不到 bbr

ss -tin state established | grep bbr

没有输出不一定失败。可能只是当前没有活跃 TCP 连接,或者连接是在切换算法之前建立的。重新建立连接再看。

tc qdisc show 显示 mq

多队列网卡常见 `mq`。先看:

sysctl net.core.default_qdisc

如果已经是 fq,通常没问题。需要更细时再检查具体网卡子队列。

开启后反而变慢

先回滚验证:

sudo sysctl -w net.ipv4.tcp_congestion_control=cubic

如果 Cubic 更稳定,说明你的场景可能不适合 BBR,或者瓶颈不在 TCP 拥塞控制。低延迟内网、数据库连接、企业专线不一定需要 BBR。

继续阅读