Linux TCP/IP 和 BBR 参数智能优化脚本
VPS用久了会发现,同样的带宽,有的服务器传文件、访问网站就是比别的快,很大一部分原因出在TCP/IP参数和拥塞控制算法上。默认配置一般比较保守,没有针对具体网络环境做调优,而BBR这类拥塞控制算法配合合理的TCP参数,能明显改善高延迟、丢包网络下的传输速度。
手动一项项调这些内核参数比较麻烦,还容易调错导致连接不稳定,所以直接用一键脚本智能优化更省事。yahuisme 在 GitHub 上维护了一个针对这类场景的优化脚本:
1 | bash <(curl -sL https://raw.githubusercontent.com/yahuisme/network-optimization/main/script.sh) |
脚本会自动检测当前系统的内核版本和网络环境,调整拥塞控制算法(切换到BBR)、TCP缓冲区大小(根据服务器内存和带宽调大读写缓冲区)、队列规则(搭配BBR一起调整)以及其他内核网络参数(比如连接队列长度、TIME_WAIT状态回收等)。不需要手动挨个改 /etc/sysctl.conf,脚本跑完会自动应用配置。如果想搞清楚TIME_WAIT状态回收具体在解决什么问题、为什么高并发场景下端口会被耗尽,可以看看Linux服务器为什么会积累大量TIME_WAIT连接这篇,原理讲得比较细。
跑脚本之前,先确认一下内核版本,BBR从Linux 4.9开始才支持:
1 | uname -r |
如果内核版本太旧,脚本一般会提示需要先升级内核,或者自动引导安装支持BBR的内核。
脚本跑完之后,确认拥塞控制算法有没有切换成BBR:
1 | sysctl net.ipv4.tcp_congestion_control |
正常应该输出 net.ipv4.tcp_congestion_control = bbr,再检查一下队列规则:
1 | sysctl net.core.default_qdisc |
输出 fq 或者 fq_codel 说明配置完整生效了。
对高延迟的海外VPS线路来说,开启BBR之后文件下载速度和网页打开速度的提升通常是能直接感受到的,尤其是在原本网络质量一般、丢包率偏高的线路上效果更明显。如果服务器本身网络质量已经很好(比如本地IDC、低延迟专线),提升幅度会相对有限。BBR的原理和为什么有时候感觉没什么效果,可以参考为什么开了BBR网速却感觉一点没提升,搞清楚原理之后对验证结果的判断会更准确。
如果这台VPS平时是通过手机远程管理的,跑完这个脚本之后建议顺手测一下连接体验有没有改善,具体连接方式可以参考Termux手机管理VPS教程。BBR不是唯一的加速手段,如果有更细分的需求,也可以看看BBRplus与其他加速方式安装,多数情况下普通VPS用这个智能优化脚本跑一遍BBR就已经够用了。