CentOS 7 / 8 开启Google BBR加速 让你的VPS更快

By | July 16, 2021

BBR 是 Google 提出的一种新型拥塞控制算法,可以使 Linux 服务器显著地提高吞吐量和减少 TCP 连接的延迟。

BBR解决了两个问题:

再有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。

降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。

项目地址:https://github.com/google/bbr

开启 BBR 要求 4.10 以上版本 Linux 内核

升级内核:

uname -r  #如果低于4.10,则进行以下步骤

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org    #添加更新源

sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm  #安装源

sudo yum --enablerepo=elrepo-kernel install kernel-ml -y    #启用内核yum源的同时安装内核

rpm -qa | grep kernel      #看一下是内核版本是否比之前的内核版本更新,内核版本更新,符合大于4.10,则说明内核升级成功

配置系统默认启动内核版本

(1)普通方法:

sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'  

#看一下类似kernel-ml-4.11.0-1.el7.elrepo.x86_64之类的内容在哪行,第一行为0,第二行为1,以此类推

sudo grub2-set-default 1  #1为上面内容所在的行数

(2)修改grub2 (针对没有grub2.cfg文件)

修改/etc/grub2-efi.cfg文件,将3.10内核部分注释,部分内容截图

###menuentry 'CentOS Linux (3.10.0-1062.18.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-07f41014-2c86-4b18-96f7-5a9e50a0f13e' {
###    load_video
###    set gfxpayload=keep
###    insmod gzio
###    insmod part_gpt
###    insmod xfs
###    set root='hd1,gpt2'
###    if [ x$feature_platform_search_hint = xy ]; then
###      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  463082c5-cd34-4a98-8683-69f3258937d0
###    else
###      search --no-floppy --fs-uuid --set=root 463082c5-cd34-4a98-8683-69f3258937d0
###    fi
###    linuxefi /vmlinuz-3.10.0-1062.18.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.utf8
###    initrdefi /initramfs-3.10.0-1062.18.1.el7.x86_64.img
###}
menuentry 'CentOS Linux (5.4.12-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-07f41014-2c86-4b18-96f7-5a9e50a0f13e' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod xfs
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  463082c5-cd34-4a98-8683-69f3258937d0
    else
      search --no-floppy --fs-uuid --set=root 463082c5-cd34-4a98-8683-69f3258937d0
    fi
    linuxefi /vmlinuz-5.4.12-1.el7.elrepo.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
    initrdefi /initramfs-5.4.12-1.el7.elrepo.x86_64.img
}

reboot     #重启服务器,使用新内核

uname -r   #显示4.10以上的版本正常

配置BBR

echo ‘net.core.default_qdisc=fq’ | sudo tee -a /etc/sysctl.conf
echo ‘net.ipv4.tcp_congestion_control=bbr’ | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

完成后,分别执行如下命令来检查 BBR 是否开启成功:

sudo sysctl net.ipv4.tcp_available_congestion_control
# 输出应为 net.ipv4.tcp_available_congestion_control = bbr cubic reno
sudo sysctl -n net.ipv4.tcp_congestion_control
# 输出应为 bbr
lsmod | grep bbr
# 输出应类似 tcp_bbr  16384  28

Leave a Reply