Debian 服务器一键开启 BBRv3:晚高峰网络不卡顿的保姆级教程
手里几台小水管服务器最近到了晚高峰总是延迟飙升,看了一下原来是还在用着老掉牙的 BBRv1。听说 Google 早就把 BBRv3 合并进 Linux 主线内核了,这玩意儿对 ECN(显式拥塞通知)的支持简直是大杀器,能听懂路由器的“堵车”信号,自然就不容易卡顿了。
今天就给大家分享一个我实测好用的方案:基于官方 6.12 源码构建的 Debian 内核,外加一套针对小内存服务器优化的参数配置。整个过程不需要懂内核代码,只要会复制粘贴命令就行。
为什么一定要折腾 BBRv3?
BBRv3 通过拥塞控制机制有效降低网络延迟
在聊安装前,先说说它和咱们现在常用的 BBRv1 到底有啥区别,不然你可能觉得没必要折腾。
-
听懂“堵车”信号(ECN 支持):这是 BBRv3 相比 v1 最大的进步。以前网络拥堵时,数据包只能硬着头皮发,导致丢包重传,延迟瞬间爆炸。v3 配合 6.12 内核成熟的 ECN 机制,一旦收到拥塞通知,能立马调整发送策略,晚高峰的延迟曲线会平滑很多。
-
自动 MTU 探测:开启
tcp_mtu_probing后,能有效防止因为路径 MTU 不一致导致的“黑洞”丢包,这对于保障 BBR 的速率计算精准度至关重要。
第一步:一键安装 BBRv3 内核
SSH 连接服务器执行内核安装脚本
这里用的是一个开源的自动构建项目,它用的是 Linux Kernel 官方的 6.12 源码,并集成了 Debian 团队的维护补丁。放心用,很稳。
直接 SSH 连上你的服务器,复制下面这串命令一键执行:
wget https://raw.githubusercontent.com/CloudPassenger/Cloud-Kernel-BBRv3/main/install-kernel.sh && \
chmod +x install-kernel.sh && ./install-kernel.sh
运行后,脚本会让你选语言(建议选 English),然后直接选版本号为 0 的最新版即可。脚本跑完了记得重启服务器:reboot。
重启回来后,我们要验证一下是不是真的换上了 BBRv3:
sysctl net.ipv4.tcp_congestion_control
# 输出应该是 net.ipv4.tcp_congestion_control = bbr
modinfo tcp_bbr | grep version
# 输出应该包含 version: 3
第二步:针对内存大小的 sysctl 参数优化
内核装好了,这只是第一步。要让效果拔群,还得根据你机器的内存大小调整系统参数。下面两套配置,大家按需自取。
方案 A:针对 1-2GB 小内存服务器(最常用)
很多便宜的 VPS 都是 1G 或 2G 内存,这时候不能盲目加大缓冲区,否则搞不好被 OOM 杀进程。这套配置非常保守,兼顾了防止内存溢出和网络性能。
直接粘贴执行下面的大段命令:
cat >> /etc/sysctl.d/99-bbr3.conf << EOF
==========================================
1-2GB Small RAM Server Optimization
==========================================
--- 1. VM Subsystem Tweaks ---
vm.swappiness = 20
vm.vfs_cache_pressure = 100
vm.max_map_count = 131072
vm.overcommit_memory = 1
--- 2. Filesystem Tweaks ---
fs.file-max = 524288
fs.nr_open = 524288
--- 3. Network Core Buffer ---
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.optmem_max = 65536
--- 4. IPv4 Stack & BBRv3 Settings ---
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_ecn = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_notsent_lowat = 16384
net.ipv4.tcp_fastopen = 3
EOF
sysctl --system
方案 B:针对 4GB 及以上内存服务器
如果你内存比较富裕,可以把网络缓冲区适当调大,吞吐量上限会更高。建议在执行上述脚本前,手动修改一下“第 3 部分”的参数。
或者你可以用这一段替换上面脚本中的“--- 3. Network Core Buffer ---”部分:
--- 3. Network Core Buffer ---
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
# 调整缓冲区至 32MB,4G 内存下非常安全
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.core.optmem_max = 65536
效果与总结
配置应用完不需要重启,直接生效。如果你用的是 Cloudflare CDN (CDN 回源) 或者经常跨国传输科学上网数据,这套组合拳的效果非常明显,特别是在晚高峰时段,视频卡顿 ping 忽高忽低的情况会有很大改善。
总之,BBRv3 加上这套针对小内存优化的参数,算是目前低配服务器的“通关秘籍”了。

评论已关闭