如何在CentOS 7上部署Google BBR

本文章搬运自 https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7

【注:文章当时使用的内核版本是4.9.0  而目前是4.15.6(4.15版本高于4.9)】

步骤 1: 使用 Elrepo RPM 存储库升级内核

为了使用 BBR, 您需要将 CentOS 7 机器的内核升级到4.9.0以上。 您可以使用 Elrepo RPM 存储库轻松地完成该操作。

在升级之前, 您可以查看当前内核:

uname -r

此命令应输出字符串, 类似于:

3.10.-514.2. . El7 x86_64

如您所见, 当前内核是3.10.0。

安装 ELRepo repo:

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

使用 ELRepo repo安装4.9.0 内核:【当前安装的是4.15.6】

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

确认结果:

rpm -qa | grep kernel

如果安装成功, 您应该在输出列表中看到kernel-ml-4.9.0-1.el7.elrepo.x86_64

kernel-ml-4.9.-.el7.elrepo.x86_64
kernel-3.10.-.el7.x86_64
kernel-tools-libs-3.10.-514.2..el7.x86_64
kernel-tools-3.10.-514.2..el7.x86_64
kernel-3.10.-514.2..el7.x86_64

【没有看到没有关系】

现在, 您需要通过设置默认的 GRUB2 启动项来启用4.9.0 内核。

显示 Grub2 菜单中的所有条目:

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

结果应类似于:

CentOS Linux  Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.-.el7.elrepo.x86_64)
CentOS Linux (4.9.-.el7.elrepo.x86_64) (Core)
CentOS Linux (3.10.-514.2..el7.x86_64) (Core)
CentOS Linux (3.10.-.el7.x86_64) (Core)
CentOS Linux (-rescue-bf94f46c6bd04792a6a42c91bae645f7) (Core)

由于行计数从0开始, 并且4.9.0 内核项位于第二行上, 因此将默认启动项设置为 1:

sudo grub2-set-default 

  注:我得到的结果与示例不同,如下

  CentOS Linux (4.15.6-1.el7.elrepo.x86_64) 7 (Core)

  CentOS Linux 7 Rescue 186e68c8657e4bfc8df5044d08b50231 (3.10.0-693.17.1.el7.x86_64)

  CentOS Linux (3.10.0-693.17.1.el7.x86_64) 7 (Core)
  CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)
  CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
  CentOS Linux (0-rescue-c73a5ccf3b8145c3a675b64c4c3ab1d4) 7 (Core)

  此时的CentOS Linux (4.15.6-1.el7.elrepo.x86_64) 7 (Core)位于第一条 所以我输入的应该是

  

  sudo grub2-set-default 

重新启动系统:

sudo shutdown -r now

当服务器重新联机时, 重新登录并重新运行 uname 命令以确认您使用的是正确的内核:

uname -r

您应该看到如下结果:

4.9.-.el7.elrepo.x86_64

(现在应该是)

4.15.-.el7.elrepo.x86_64

步骤 2: 启用 BBR

为了启用 BBR 算法, 您需要修改 Sysctl 配置, 如下所示:

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  

步骤 3 (可选): 测试网络性能增强

为了测试 BBR 的网络性能增强, 您可以在 Web 服务器目录中创建一个文件以供下载, 然后, 从台式计算机上的 Web 浏览器测试下载速度。

sudo yum install httpd -y
sudo systemctl start httpd.service
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
cd /var/www/html
sudo dd if=/dev/zero of=500mb.zip bs=1024k count=

最后, 从桌面计算机上的 Web 浏览器访问 URL http://[your-server-IP]/500mb.zip , 然后评估执行下载速度。

以上。 谢谢你的阅读。

如何在CentOS 7上部署Google BBR【搬运、机翻】的更多相关文章

  1. Linux - 在 CentOS 7 上部署 Google BBR

    BBR(Bottleneck Bandwidth and RTT)是一种新的拥塞控制算法,由Google开发.有了BBR,Linux服务器可以显着提高吞吐量并减少连接延迟. Step 1: Upgra ...

  2. 如何在Linux服务器上部署禅道

    最近换了新的项目团队,由于新团队比较年轻化,没有实行正规的项目管理,于是我自告奋勇要为团队管理出一份力,帮助团队建立敏捷化的项目管理,经过多方考究和对比后,选择了目前较受欢迎的开源项目管理软件:禅道. ...

  3. 如何在 CentOS 7 上安装 Nginx

    本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Nginx 读作 engine x, 是一个免费的.开源的.高性能的 HTTP 和反向代理服务,主要负责负载一些访问量比较大的站点. ...

  4. 如何在CentOS 7上修改主机名

    如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时 ...

  5. 在CentOS 7上部署Ghost博客

    作者:waringid 一.简介 跟静态博客不同的是,Ghost 这种轻量级的动态博客,有一个管理后台,可以直接写作和管理博客.本质上,跟 WordPress 是相通的,只是 Ghost 搭建在 No ...

  6. 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密

    本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Let’s Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由.自动 ...

  7. 如何在CentOS 7上安装newman

    前提:先安装nodejs,详见:如何在CentOS 7上安装Node.js和npm #sudo npm install -g newman 结果: /usr/local/bin/newman -> ...

  8. 在CentOS 8 上 部署 .Net Core 应用程序

    在Centos 8 上 部署 .Net Core 应用程序     -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...

  9. CentOS 7 上部署Mono 4 和Jexus 5.6

    概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mvc 4 应用.这篇文章是描述如何在 ...

随机推荐

  1. 关于Serializable的serialVersionUID

    在实现了Serializable接口的class中,需要声明一个long serialVersionUID,用来标明当前class的版本号,但很多人在编程时,总是不原意去声明这个serialVersi ...

  2. Android 双卡获取当前使用流量在线卡的信息

    最近接触了一个项目,需要获取在线流量卡的信息,下面的方式,可以获取大部分手机的正确手机卡信息. 一  获取获取IMEI public static String getDeviced(int solt ...

  3. linux_操作系统

    如何查询操作系统版本? cat /etc/redhat-release 什么是操作系统? -- win10,linux都是os,应用软件和硬件打交道中间桥梁软件,管理 硬件+软件 资源,计算机系统基础 ...

  4. redis集群主从集群搭建、sentinel(哨兵集群)配置以及Jedis 哨兵模式简要配置

    前端时间项目上为了提高平台性能,为应用添加了redis缓存,为了提高服务的可靠性,redis部署了高可用的主从缓存,主从切换使用的redis自带的sentinel集群.现在权作记录.

  5. vim 实用配置

    修改文件~/.vimrc 如下: set nu " 显示行号colorscheme torte " 设定配色方案set tabstop=4 " 设定 tab 长度为 4s ...

  6. Apache配置虚拟主机后,不能访问localhost

    解决方法:将localhost设为虚拟域名 重要的是要注释掉httpd.conf文件的ServerName localhost:80

  7. JavaScript this浅析

    在做聊天室的过程中,我遇到了一个小问题,在javascrip中,有没有和c语言中的静态变量类似的对象呢? 答案就在闭包之中. 而说到闭包,又得说说那个我视之如地雷的this.this搞明白了,闭包这东 ...

  8. 【转】高斯-克吕格投影与UTM投影异同

    高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配 ...

  9. MySQL相关文档索引

    MySQL的新功能5.7 https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html MySQL5.7安装 http://note.youd ...

  10. lvs+keepalive构建高可用集群

    大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言        Keepalived使用的vrrp协议方式,虚拟路由 ...