专栏首页PHP 开发CentOS 7 开启 BBR 加速

CentOS 7 开启 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左右。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 自适应的多列图文混排改进

    关于网页两栏、三栏的布局讨论由来已久,有各种各样上佳的方案。本文重点讨论的不是两栏、三栏布局这样通用的解决方案,而是一个专门针对两栏图文混排的特定需求的改进型方...

    小李刀刀
  • [译]Laravel 5.0 之自定义错误页面

    本文译自 Matt Stauffer 的系列文章. ---- 在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫...

    小李刀刀
  • 写在 Laravel 5.5 发布之前

    Laravel 5.5 将于 2017年7月发布,这将是继 Laravel 5.1 之后的下一个长期支持版本,相比之前发布的几个“中间版本”而言,意义重大。目前...

    小李刀刀
  • 头皮脑电图源空间的计算建模为癫痫的术前评估提供依据

    目的:颅内脑电图(iEEG)指导癫痫手术的有效性取决于iEEG电极的植入位置。该决定是通过非侵入性记录方式(例如头皮脑电图)得出的。因此作者提出了一个框架,以询...

    脑机接口社区
  • C#二进制流的序列化和反序列化

    1 public class BinaryHelper 2 { 3 /// <summary> 4 /...

    彭泽0902
  • salesforce 零基础学习(二十)简单APP制作

    本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_w...

    用户1169343
  • 记一次 sed 悲剧

    今天,一个 Linux 命令失误让我失去了博客的所有 Markdown 文档。很坑的命令,一共 77 篇 Markdown 文档,里面的内容全部变为了 omme...

    莲花海
  • 创建分布式图数据库JanusGraph对象

    知识图谱
  • 老生常谈:利用Membership实现SSO(单点登录)

    虽然有一些现成的第三方解决方案比如:OpenID,Passport,SpaceCard等都还不错,但是要么就是收费的(passport),要么就是有点用不习惯(...

    菩提树下的杨过
  • 解决IIS 不能下载.exe.config文件的方法

    Config文件是web的配置文件,默认是不允许下载的,就算在MIME中配置“application/octet-stream”,也是下载不了。当然出于安全考虑...

    跟着阿笨一起玩NET

扫码关注云+社区

领取腾讯云代金券