CentOS 7 开启 BBR 加速
时间:2022-05-02
本文章向大家介绍CentOS 7 开启 BBR 加速,主要内容包括升级内核、调整GRUB启动顺序、修改sysctl 开启 BBR、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR
,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。
对于TCP单边加速,并非所有人都很熟悉,不过有另外一个大名鼎鼎的商业软件“锐速”,相信很多人都清楚。特别是对于使用国外服务器或者VPS的人来说,效果更佳。
网上有很多在 Debian 和 Ubuntu 系统下启用 BBR 的教程,我就不粘贴了,我自己一直用的是 CentOS,本文介绍一下在 64位 CentOS 7 系统下开启BBR的方法。
升级内核
第一步首先是升级内核到支持BBR的版本:
#导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- CentOS 7
#安装elrepo源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
- CentOS 6
#安装elrepo源
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
#安装4.9.0以上的内核
yum --enablerepo=elrepo-kernel install kernel-ml -y
# 确认是否成功安装新版内核
rpm -qa | grep kernel
如果安装成功,你应该会看到 kernel-ml-4.*.*-*.el7.elrepo.x86_64
这样的条目:
kernel-tools-3.10.0-514.el7.x86_64
kernel-ml-4.12.4-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-514.el7.x86_64
kernel-3.10.0-514.el7.x86_64
调整GRUB启动顺序
在安装好新版本内核以后,要先用新安装的内核引导系统看看能否正常启动,下面是直接调整 GRUB2 启动顺序的命令:
# 查看可用的启动项
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d '
执行完这条命令以后,能看到多个可以引导的系统,比如我的是:
CentOS Linux (4.12.4-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-d4d0adfea8e944e5b8019ed1aa3c9e16) 7 (Core)
不管有多少个,从上往下,记住要引导的项的序号(从0开始计数)即可,比如上面的例子,我要使用第一项 CentOS Linux (4.12.4-1.el7.elrepo.x86_64) 7 (Core)
来引导,序号是 0
。
# 设置默认引导项
grub2-set-default 0
# 重启系统
reboot
修改sysctl 开启 BBR
重启系统之后,通过 uname -r
或者其它命令可以看到我们的内核已经是新版内核了,接下来开启 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 加载 /etc/sysctl.conf 文件中的参数并显示,主要看看有没有报错的设置(显示的结果与你的配置文件内容有关)
sysctl -p
# 验证 bbr 是否开启,如果成功,应该会看到 net.ipv4.tcp_congestion_control = bbr
sysctl net.ipv4.tcp_available_congestion_control
# 依然是验证,如果成功,应该会看到类似 tcp_bbr 16384 3 这样的文字
lsmod | grep bbr
以上每一步最好都根据注释中的说明仔细检查一下是否顺利,然后再进行下一步,如果都成功的话,到这里已经成功开启BBR算法。可以在你的服务器上放一个大文件,然后用浏览器下载一下看看速度是否有提升。
我的洛杉矶VPS加速以后,用Chrome下载的速度从500K/s左右提升到了3.3M/s左右。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法