centos7.9 TCP 加速

news2024/11/27 23:50:55

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)

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构和算法】找出两数组的不同

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 哈希类算法题注意事项 2.2 方法一&#xff1a;哈希法 三、代码 3.1 方法一&#xff1a;哈希法 四…

Oracle(4)

子查询 子查询语法很简单&#xff0c;就是select 语句的嵌套使用。 查询工资比SCOTT高的员工信息 分析&#xff1a;两步即可完成 1. 查出SCOTT的工资 SQL> select ename, sal from emp where enameSCOTT 其工资3000 2. 查询比3000高的员工 SQL> select * from emp…

【零基础入门VUE】VueJS - 环境设置

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 直接在 HTML 文件中使用 <script> 标签 <html><head><script type "text/javascript" src "vue.min.j…

Spark 集群搭建

文章目录 搭建前准备安装搭建解压并重命名环境变量配置配置文件yarn-site.xmlspark-env.sh 官网求 π(PI) 案例启动spark-shell通过浏览器查看显示查看 Spark 的网页信息展示 搭建前准备 下载地址&#xff1a;Index of /dist/spark (apache.org) 配置好 hadoop 环境&#xff…

实战 | 使用OpenCV快速去除文档中的表格线条(步骤 + 源码)

导 读 本文主要介绍如何使用OpenCV快速去除文档中的表格线条,并给详细步骤和代码。 背景介绍 测试图如下,目标是去除下面三张图中的表格线条,方便后续图像处理。 实现步骤 下面演示详细步骤,以图1为例: 【1】获取二值图像:加载图像、转为灰度图、OTSU二值化 i…

Awesome Chrome Form UI - 框架设计与基础实现

Money is not evil by itself. Its just paper with perceived value to obtain other things we value in other ways. If not money what is evil you may ask? Evil is the unquenchable, obsessive and moral bending desire for more. Evil is the bottomless,soulless …

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:&#xff08;2023…

C++面向对象(OOP)编程-C++11新特性详解

C11作为一个重要的版本&#xff0c;引入了很多新的特性&#xff0c;解决了C语言本身很多遗留的内存泄露问题&#xff0c;并且提供了很多比较灵活的用法。引入的auto&#xff0c;智能指针、线程机制都使得C语言的灵活性、安全性、并发性有了很大的提升。 本文会比较详细的介绍C1…

医疗行业的信息安全现状

文章目录 前言一、医疗行业相关政策法规二、“互联网+医疗健康”推进信息安全建设三、医疗行业网络安全形势依然严峻1、等级保护工作未全面开展落实2、医疗行业网络安全风险较高医疗行业网络安全隐患普遍存在遭受勒索病毒攻击严重3、安全防护水平相对落后缺乏必要的网络安全防护…

QT应用篇 三、QML自定义显示SpinBox的加减按键图片及显示值效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.SpinBox组件2.SpinBox中QML的使用 总结 前言 记录自己学习QML的一些小技巧方便日后查找 QT的…

rsync备份工具

有了同步源服务器之后&#xff0c;就可以使用rsync工具来执行远程同步了&#xff0c;本节介绍的备份操作均在客 户机&#xff08;发起端&#xff09;执行&#xff0c;实际上&#xff0c;同步源与发起端可以是同一台主机&#xff08;当然这种情况不常见&#xff09;&#xff0c;…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

【12.28】转行小白历险记-刷算法04

01两两交换链表中的节点 整体思路 1.要修改后一个节点的指向一定要知道前一个节点的指向才可以改变后面一个节点的 2.分情况奇数和偶数节点&#xff0c;终止条件很重要 3.虚拟头节点&#xff0c;是对我们操作的指针是不是头节点进行判断 02删除链表的倒数第N个节点 思路 …

大数据与人工智能|万物皆算法(第三节)

要点一&#xff1a;数据与智能的关系 1. 一切的核心都是数据&#xff0c;数据和智能之间是密切相关的。 数据是对客观现实的描述&#xff0c;而信息是数据转化而来的。 例如&#xff0c;24是数据&#xff0c;但说“今天的气温是24摄氏度”是信息&#xff0c;而说“班可以分成24…

oracle与mysql的分析函数(窗口函数)

分析函数定义 在SQL语句中&#xff0c;很多查询语句需要进行GROUP BY分组汇总&#xff0c;但是一旦经过分组&#xff0c;SELECT返回的记录数就会减少。为了保留所有原始行记录&#xff0c;并且仍可以进行分组数据分析&#xff0c;分析函数应运而生。 Oracle 8i 版本开始支持窗…

java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 在线票务系统&#xff08;选座&#xff09;管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

MongoDB主从复制,一文打尽!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Hadoop安装笔记2单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

紧接着上一篇博客&#xff1a;Hadoop安装笔记1&#xff1a; Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2&#xff1a;离线数据处理-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135…

K8s实战-基于LivenessProbe健康检查

LivenessProbe探针用于判断容器是否存活&#xff0c;如果探测到容器不健康&#xff0c;则kubelet将杀掉该容器&#xff0c;然后根据重启策略处理。 LivenessProbe的实现方式&#xff1a; ExecAction&#xff1a;在容器内部执行一个命令&#xff0c;如果该命令的返回码为0&…

右键菜单“以notepad++打开”,在windows文件管理器中

notepad 添加到文件管理器的右键菜单中 找到安装包&#xff0c;重新安装一般即可。 这里有最新版&#xff1a;地址 密码:f0f1 方法 在安装的时候勾选 “Context Menu Entry” 即可 Notepad的右击打开文件功能 默认已勾选 其作用是添加右键快捷键。即&#xff0c;对于任何…