linux os

CentOS7 开启 BBR 加速

内容概述: linux bbr加速 CentOS7 BBR 加速

BBR 是 Google 开发的 TCP 拥塞算法,俗话说,Google 出品必属精品,如果条件允许,服务器尽量开启BBR。

BBR 模块从 4.9 版本的内核中开始支持,CentOS7 的发布版标配的是 kernel-3.10,所以首先需要升级内核到大于等于 4.9 的版本,然后再更改设置开启 BBR。

查看内核版本

如果内核版本在4.9 一下, 则需要内核

[root@vultr ~]# uname -r
3.10.0-1062.4.1.el7.x86_64

内核升级

升级内核有多种方法,小版本升级可以用 yum update 直接搞定,大版本升级有源码升级ELRepo 库升级两种方法。

最新内核查看这里:http://elrepo.org/linux/kernel/el7/x86_64/RPMS/

1. 执行以下代码

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum --enablerepo=elrepo-kernel install kernel-ml -y

最后提示安装成功:

已安装:
kernel-ml.x86_64 0:5.5.10-1.el7.elrepo

2、查看内核是否安装成功

[root@vultr ~]# rpm -qa | grep kernel
kernel-tools-3.10.0-1062.4.1.el7.x86_64
kernel-3.10.0-1062.4.1.el7.x86_64
kernel-ml-5.5.10-1.el7.elrepo.x86_64
kernel-devel-3.10.0-1062.9.1.el7.x86_64
kernel-3.10.0-1062.el7.x86_64
kernel-tools-libs-3.10.0-1062.4.1.el7.x86_64
kernel-headers-3.10.0-1062.9.1.el7.x86_64

设置启动内核

接下来我们需要将新内核设置为默认选项。

查看默认启动内核:

[root@vultr ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)

当前默认内核是 3.10.0-1062.4.1.el7.x86_64 需要切换为新安装的版本

查看所有内核

cat /boot/grub2/grub.cfg | grep menuentry

可以看到所有内核版本:

if [ x”${feature_menuentry_id}” = xy ]; then
menuentry_id_option=”–id”
menuentry_id_option=””
export menuentry_id_option
menuentry ‘CentOS Linux 7 Rescue bfa1e01c3d5c4f7fba1e60546fdf4849 (5.5.10-1.el7.elrepo.x86_64)‘ –class centos –class gnu-linux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-3.10.0-1062.el7.x86_64-advanced-68c5a1f3-e9f3-4828-8499-38420f496208’ {
menuentry ‘CentOS Linux (5.5.10-1.el7.elrepo.x86_64) 7 (Core)‘ –class centos –class gnu-linux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-3.10.0-1062.el7.x86_64-advanced-68c5a1f3-e9f3-4828-8499-38420f496208’ {
menuentry ‘CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)‘ –class centos –class gnu-linux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-3.10.0-1062.el7.x86_64-advanced-68c5a1f3-e9f3-4828-8499-38420f496208’ {
menuentry ‘CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)‘ –class centos –class gnu-linux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-3.10.0-1062.el7.x86_64-advanced-68c5a1f3-e9f3-4828-8499-38420f496208’ {
menuentry ‘CentOS Linux (0-rescue-b3dcf2fec4e34281a992cabd30f942a4) 7 (Core)‘ –class centos –class gnu-linux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-0-rescue-b3dcf2fec4e34281a992cabd30f942a4-advanced-68c5a1f3-e9f3-4828-8499-38420f496208’ {

接着修改修改最新内核为默认启动(这儿只能使用上面命令输出中双引号 “ ” 或者单引号 ‘ ‘ 中的内容

grub2-set-default  'CentOS Linux (5.5.10-1.el7.elrepo.x86_64) 7 (Core)'

验证默认启动内核

[root@vultr ~]#  grub2-editenv list
saved_entry=CentOS Linux (5.5.10-1.el7.elrepo.x86_64) 7 (Core)

可以看到启动内核已经是新的内核了

重启服务器

通过VPS控制台或者管理面板重启Linux, 系统重启后, 再次查看内核版本, 确认下已切换到新内核:

[root@vultr ~]# uname -r
5.5.10-1.el7.elrepo.x86_64

开启 BBR

执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行以下代码

modprobe tcp_bbr

echo "tcp_bbr" >> /etc/modules-load.d/modules.conf

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf

echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

sysctl -p

如果提示 bash: /etc/sysctl.conf: Operation not permitted(文件不能被操作)
文件不能操作的原因是加了i属性,所以相应的解决方案就是把文件的i属性去除,然后对此文件内容进行修改,最好在操作完成后恢复文件的i属性。
去除i属性:chattr -i /etc/sysctl.conf
添加i属性:chattr +i /etc/sysctl.conf

观察BBR是否开启成功,执行以下代码:

# sysctl -n net.ipv4.tcp_congestion_control
# lsmod | grep bbr

如果两行命令都有 BBR 字样输出,则代表 BBR 启用成功。

PS. 有些VPS直接提供带有BBR 的系统安装包, 不用手动设置 linux bbr加速

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top