centos7.9 TCP 加速

BBR是谷歌开发的新的TCP加速算法,在网络状况不好的服务器上开启TCP的bbr,可以在无需增加任何硬件投入的情况下实现网络加速,并且客户端无需做任何配置,因此使用起来非常的方便。TCP加速对网络状况较好的内网环境,或者大带宽的境内服务器优化效果不明显,对于境外的VPS则有较好的加速效果。

开启BBR的前提是linux的内核版本要高于4.8(高版本的内核已经默认集成了BBR模块),目前centos7.9默认安装的内核版本是3.10,因此Centos7.9要开启TCP BBR加速首先要升级centos7 的内核。

以下的操作都是在centos7.9操作系统之上的,使用命令cat /etc/redhat-release命令可以查看当前系统的版本信息。

cat /etc/redhat-release

在这里插入图片描述
使用命令uname -ra可以查看当前系统的内核版本信息。

uname -ra

在这里插入图片描述

1.升级Centos7内核

1.1查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。

查找 kernel rpm 历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

1.2下载内核 RPM

共需要下载三个类型 rpm

kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm

kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

cd /home
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

1.3安装内核

rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

在这里插入图片描述

1.4确认已安装内核版本

[root@localhost kernel]# rpm -qa | grep kernel
kernel-devel-3.10.0-1160.102.1.el7.x86_64
kernel-devel-3.10.0-1160.el7.x86_64
kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64
kernel-headers-3.10.0-1160.102.1.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-tools-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.102.1.el7.x86_64
kernel-lt-5.4.226-1.el7.elrepo.x86_64
kernel-devel-3.10.0-1160.99.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.102.1.el7.x86_64
kernel-3.10.0-1160.99.1.el7.x86_64

在这里插入图片描述

1.5设置启用新内核

# 查看启动顺序
[root@localhost alfiy]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.102.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.99.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-4f159f5c7c9a4d2aa7ea785de06efbaf) 7 (Core)

# 设置启动顺序 启动顺序从0排序,比如上面列表中0代表的是CentOS Linux (3.10.0-1160.105.1.el7.x86_64) 7 (Core)
# 1代表的是CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
[root@localhost ~]# grub2-set-default 1

# 重启生效
[root@localhost ~]# reboot

在这里插入图片描述
💁‍♂ 如果grub2.cfg文件为空,则上述命令不会生效,需要执行grub2-mkconfig生成一个新的grub2.cfg文件.

grub2-mkconfig -o /etc/grub2.cfg

然后再执行前面的命令。

2.安装BBR

echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf
sysctl -p

在这里插入图片描述

👿 实测net.core.default_qdisc=cake的效果要比`net.core.default_qdisc=fq的效果好一些,但是cake好像在4.9内核上不支持,在5.4内核上就支持了。

💁‍♂ 其实上述步骤等同于直接修改/etc/sysctl.conf文件,如果多次执行上述命令时,再使用sysctl -p命令检查时会出现重复项,大家重新编辑/etc/sysctl.conf文件把重复项删除掉就可以了。

👿 如果你的系统报net.core.default_qdiscnet.ipv4.tcp_congestion_control不存在时,说明内核目前并不支持后面选项,需要检查确认内核版本。

3.检测

使用lsmod命令可以列出内核自启的模块,具体用法如下。

lsmod | grep bbr

如果出现下图所示内容,说明内核已经启用bbr模块。
在这里插入图片描述
也可以使用sysctl -p命令查看内核是否已经启用BBR,如果命令行打印出下图内容说明内核已经启用了BBR了,使用reboot命令重启服务器就可以了。
在这里插入图片描述

4.创建安装脚本

如果你有多台VPS并且都是相同的发行版本,那么需要重复前面1-3步的过程,是不是感觉有点太麻烦了?好吧,接下来我们将为前面的步骤开发一个简单的安装脚本。

思路如下,先提取前面步骤中所必需的安装命令。在前面1-3步中基本上使用了以下命令。

# 进入一个准备下载rpm包的目录 这里我们使用了家目录
cd /home

# 在当前目录下,下载所需的内核安装包
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm

# 通过rpm安装器安装下载的包 这里我们只安装了基础包和开发包,head包并没安装,如果有些程序需要head包可以再进入这个目录进行安装
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm

# 设置启用新内核
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'

# 启用Tcp的bbr加速
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf

# 重启生效
reboot

以上过程就基本上是我们手动安装的过程,由于我们要创建自动安装脚本,所以其中有些安装检查步骤就省略了。依照上面的流程,我们就可以编写自动安装脚本 了。

首先新建一个脚本文件,这里我就以tcp.sh为例。

vim tcp.sh

tcp.sh文件中添加以下内容:

#!/bin/bash

# 1. 创建目录
cd /home
mkdir bbr
cd bbr
# 2. 下载内核
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm &
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 3. 安装内核
rpm -ivh kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm &
rpm -ivh kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm &
wait
# 4. 设置启动
# 设置启动顺序 
grub2-set-default 'CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)'
wait
# 5. 安装BBR
echo 'net.core.default_qdisc=cake' | tee -a /etc/sysctl.conf &
echo 'net.ipv4.tcp_congestion_control=bbr' | tee -a /etc/sysctl.conf &
# sysctl -p
wait
# 6. 重启系统
reboot

保存退出tcp.sh文件,并给tcp.sh文件赋可执行权限。

chmoe +x tcp.sh

然后执行tcp.sh文件。

重启系统后你会发现系统已经使用新的内核,并在内核中启用了bbr了。

💁‍♂ 在脚本文件中,使用了&后台运行命令,以及wait命令,这两个命令的使用能够让脚本顺序执行,也就是说上一步骤执行完成后,再执行下一步的命令。

👿 学会举一反三:上面的脚本都是写死的,所以只能在特定的发行版本上运行,大家还可以在此基础上进行完善,比如写一个判断语句,判断当前的系统的发行版本,判断当前的内核版本,以及一些友好的提示等。

5.一键安装脚本

有心的同学,如果认真实现了前面的4步,我想肯定会有很多收获,可是也有偷懒的同学,好吧下面就给出一个可用的一键安装脚本。

yum -y update && yum install -y wget && bash <(curl -s -L https://raw.githubusercontent.com/alfiy/centos7-bbr-enable/main/tcp.sh)

💁‍♂ 其实我只是把脚本放在了一个网络上可以下载的地方,大家可以沿着这个思路生成自己的一键安装脚本,自己写的脚本适应性可能不是太强,但对自己可能更加有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/281894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【阅读笔记】Semi-supervised Domain Adaptation in Graph Transfer Learning

Background 真实世界的图上节点的标签数据是很难拿到的。 因此图转移学习被提出将知识从标记的源图转移出来&#xff0c;以帮助预测域变化的目标图中节点的标签。 尽管图迁移学习算法取得了重大进展&#xff0c;但它们通常假定源图中的所有节点都被标记出来了。 因此文章定义…

商品销售数据爬取分析可视化系统 爬虫+机器学习 淘宝销售数据 预测算法模型 大屏 大数据毕业设计(附源码)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α &#xff0c; ∠ C B F ∠ β ∠ABC∠α&#xff0c;∠CBF∠β ∠ABC∠α&#xff0c;∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …

OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图

一.环境&#xff1b; win10&#xff0c;vmware16 pro&#xff0c;openeular23.09 集群模式&#xff1a;一主二从 主机硬件配置 主机名IP角色CPU内存硬盘k8s-master01192.168.91.100master4C4G40Gk8s-worker02192.168.91.101worker(node)4C4G40Gk8s-worker03192.168.91.102wor…

toto的2023年终总结

第一次写年终总结&#xff0c;其实顺带是把大学四年的学习都给总结了一下&#xff0c;称之为大学总结更为合适吧&#xff1f; 其实把年终总结发在CSDN上有些不适&#xff0c;之前一直想着搭一个自己的博客也因为种种事情一直没有完成&#xff0c; 索性发在这里了&#xff0c;作…

什么是边缘案例测试?如何查找并确定优先级

何为边缘情况&#xff1f; 在极端条件下发生的情况被称为边缘情况&#xff0c;有时候也叫边界情况&#xff0c;在功能、回归、单元和性能测试中都会应用。如果质量保证团队知道某项功能的最大和最小负载&#xff0c;他们就能防止这些情况发生。当用户不按照程序的预期工作流程…

Windows不同的域名由不同的DNS服务器解析

gpedit.msc(组策略)-计算机配置-Windows设置-域名解析策略 本次改动在注册表中体现的位置。 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Dnscache\Parameters\DnsPolicyConfig\{666881c9-5525-434b-a62a-2ed5c61d53e5} 计算机\HKEY_LOCAL_MACHINE\SYSTEM\Cur…

⑩①【缓存】Redis持久化 RDB + AOF

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ⑩①Redis持久化 RDB AOF Redis数据快照 - RD…

XXE注入漏洞总结

XXE和XML概念 XML被设计为传输和存储数据&#xff0c;XML文档结构包括XML声明、DTD文档类型定义&#xff08;可选&#xff09;、文档元素&#xff0c;其焦点是数据的内容&#xff0c;其把数据从HTML分离&#xff0c;是独立于软件和硬件的信息传输工具。XXE漏洞全称XML Externa…

C++每日一练(8):图像相似度

题目描述 给出两幅相同大小的黑白图像&#xff08;用0-1矩阵&#xff09;表示&#xff0c;求它们的相似度。 说明&#xff1a;若两幅图像在相同位置上的像素点颜色相同&#xff0c;则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。…

软件测试/测试开发丨Linux 数据处理三剑客学习笔记

一、Linux 三剑客之 grep 1、 内容检索 获取行&#xff08;单行&#xff09; grep pattern file获取内容 grep -o pattern file获取上下文 grep -A -B -C pattern file 2、 文件检索 递归搜索 grep pattern -r dir/展示匹配文件名 grep -H 111 /tmp/1只展示匹配文件名 grep …

算法学习系列(十四):并查集

目录 引言一、并查集概念二、并查集模板三、例题1.合并集合2.连通块中点的数量 引言 这个并查集以代码短小并且精悍的特点&#xff0c;在算法竞赛和面试中特别容易出&#xff0c;对于面试而言&#xff0c;肯定不会让你去写一两百行的代码&#xff0c;一般出的都是那种比较短的…

FPGA - 231227 - 5CSEMA5F31C6 - 电子万年历

TAG - F P G A 、 5 C S E M A 5 F 31 C 6 、电子万年历、 V e r i l o g FPGA、5CSEMA5F31C6、电子万年历、Verilog FPGA、5CSEMA5F31C6、电子万年历、Verilog 顶层模块 module TOP(input CLK,RST,inA,inB,inC,switch_alarm,output led,beep_led,output [41:0] dp );// 按键…

00-Git 详解

Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具&#xff0c;也称之为代码版本控制工具&#xff0c;代码版本控制或管理的工具用的最多的&#xff1a; svn、 git。 SVN 是采用的 同步机制&#xff0c;即本地的代码版本和服务器的版本保持一致&#xff08;提…

社区医院挂号预约服务管理系统95an6

社区医院管理服务系统具有社区医院信息管理功能的选择。社区医院管理服务系统采用p[ython技术&#xff0c;基于django框架&#xff0c;mysql数据库进行开发&#xff0c;实现了首页、个人中心、用户管理、医生管理、预约医生管理、就诊信息管理、诊疗方案管理、病历信息管理、健…

创建您的第一个记忆卡片游戏

大家好&#xff01;今天&#xff0c;我们将一起探索如何用HTML、CSS和JavaScript创建一个有趣的记忆卡片游戏。我们的游戏规则很简单&#xff1a;用户需要找到一对一样的卡片。如果你是编程新手&#xff0c;不用担心&#xff0c;我会逐步引导你完成这个项目。 正文&#xff1a…

MFC扩展库BCGControlBar Pro v34.0 - 仪表盘控件全面升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v34.0已正式发布了&#xff0c;该版本包括新的主题任务对话框、图像效果、旋转圆形刻度、…

C语言转WebAssembly的全流程,及Web端调用测试

第一步&#xff1a;安装环境 参考网址&#xff1a;https://emscripten.org/docs/getting_started/downloads.html 具体过程&#xff1a; 克隆代码&#xff1a;git clone https://github.com/emscripten-core/emsdk.git进入代码目录&#xff1a;cd emsdk获取最新远端代码&…

uniapp 安卓模拟器链接

下载genymotion 安装 配置adb路径 模拟端口设为 5307