使用iperf3对服务器进行TCP调整优化—减少丢包和0重传

注意:必须是root用户,请使用sudo -i或在命令前添加sudo提权

查看当前的 net.ipv4.tcp_wmem 参数值(最好记录一下)

 sysctl net.ipv4.tcp_wmem

查询当前使用的 TCP 拥塞控制算法

 sysctl net.ipv4.tcp_congestion_control

查看当前的队列管理算法

 tc qdisc show

如未启用bbr+fq,请使用以下命令开启

 echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sysctl -p

服务端Linux安装iperf3
在Debian/Ubuntu系统上安装

 apt update
apt install iperf3

在CentOS/RHEL系统上安装

 yum install epel-release
yum install iperf3

在Fedora系统上安装

 dnf install iperf3

防火墙放行端口 (这里以ufw为例,如果你没有开启防火墙可略过这一步)

 ufw allow 5201

服务端启动iperf3
 iperf3 -s

你本地Windows机器安装iperf3(下载链接
在windows打开CMD运行:

 iperf3 -c 服务端IP -R -t 30

测试开始:
初次测试观察重传丢包情况:

计算新的参数: BDP = 客户机与服务器两边的最低带宽Mpbps * 1000 * 1000 * 客户机到服务器的延迟(单位:秒) / 8
举例:客户机器200M,服务器1000M,两者延迟180ms,那么计算值就是:200*1000*1000*0.18/8 = 4500000
带宽BDP值计算器1
带宽BDP值计算器2
延迟=你本地到服务器的延迟,或者你的目标客户到服务器的平均延迟

sysctl -w net.ipv4.tcp_wmem="4096 16384 计算出来地BDP值"
sysctl -w net.ipv4.tcp_rmem="4096 87380 同上"

应用新的值之后,再进行测试。

调整逻辑:
如果测试结果0重传或者个位数重传,可适当调大TCP缓冲区的最大值,比如上调2~4MiB;
如果测得的重传数较高,则需下调1~2MiB再进行测试;
0重传则上调,高重传则下调,如此反复,直到测速刚刚好能实现0重传或低重传 (100以内),在此基础上再下调0.5MiB或1MiB追求稳定,防止因网络高峰期而再度出现高重传。

优化目的:Retr为0,同时带宽能够跑到最大

大致流程:
调整为理论值后用iperf3测速发现0重传,执行下列命令(上调2~5MiB)

sysctl -w net.ipv4.tcp_wmem="4096 16384 理论值+3MiB"
sysctl -w net.ipv4.tcp_rmem="4096 87380 理论值+3MiB"

再次用iperf3测速发现高重传,执行下列命令(下调1~2MiB)

sysctl -w net.ipv4.tcp_wmem="4096 16384 理论值+2MiB"
sysctl -w net.ipv4.tcp_rmem="4096 87380 理论值+2MiB"

用iperf3测速发现0重传,这次可上调0.5MiB测试,发现恰好0重传,写入sysctl.conf
编辑系统内核文件

nano /etc/sysctl.conf

在文件中添加如下

net.ipv4.tcp_wmem = 4096 16384 你所测得的值
net.ipv4.tcp_rmem = 4096 87380 同上

保存并退出

Ctrl+o+Enter(回车)
Ctrl+x

使更改生效

sysctl -p

 

优化前:

优化后:

Linux完整卸载阿里云监控

两种方法

第一种方法:
1、以root用户登录云监控插件所在主机。
执行以下命令,停止云监控插件。

 bash /usr/local/cloudmonitor/cloudmonitorCtl.sh stop 

2、执行以下命令,卸载云监控插件。

 bash /usr/local/cloudmonitor/cloudmonitorCtl.sh uninstall 

3、执行以下命令,删除目录cloudmonitor。

 rm -rf /usr/local/cloudmonitor 

第二种方法:
1、以root用户登录云监控插件所在主机。
执行以下命令,创建文件,例如:test.sh。
touch test.sh
执行以下命令,编辑文件test.sh。
vi test.sh
将以下内容拷贝到文件test.sh中。

 #!/bin/bash

if [ -z "${CMS_HOME}" ]; then
  CMS_HOME_PREFIX="/usr/local"
  if [ -f /etc/os-release -a ! -z "`egrep -i coreos /etc/os-release`" ];then
    CMS_HOME_PREFIX="/opt"
  fi
fi
CMS_HOME="${CMS_HOME_PREFIX}/cloudmonitor"

if [ `uname -m` = "x86_64" ]; then
    ARCH="amd64"
    ARGUS_ARCH="64"
else
    ARCH="386"
    ARGUS_ARCH="32"
fi

case `uname -s` in
  Linux)
    CMS_OS="linux"
    ;;
  *)
    echo "Unsupported OS: $(uname -s)"
    exit 1
    ;;
esac

DEST_START_FILE=${CMS_HOME}/cloudmonitorCtl.sh
#卸载插件。
GOAGENT_ELF_NAME=${CMS_HOME}/CmsGoAgent.${CMS_OS}-${ARCH}
if [ -d ${CMS_HOME} ] ; then
  if [ -f ${DEST_START_FILE} ];then
    ${DEST_START_FILE} stop
  fi
  if [ -f ${CMS_HOME}/wrapper/bin/cloudmonitor.sh ] ; then
    ${CMS_HOME}/wrapper/bin/cloudmonitor.sh remove;
  fi
  if [ -f ${GOAGENT_ELF_NAME} ]; then
    ${GOAGENT_ELF_NAME} stop
  fi
  rm -rf ${CMS_HOME}
fi
 

2、按Esc键,输入:wq,再按Enter键,保存并退出文件test.sh。
3、执行以下命令,执行文件test.sh。
sh test.sh

视频字幕配制工具,利用大语言模型进行字幕智能断句、校正、优化、翻译,无需 GPU,支持批量字幕合成

#字幕

VideoCaptioner

视频字幕配制工具,利用大语言模型进行字幕智能断句、校正、优化、翻译,无需 GPU,支持批量字幕合成,支持实时预览和快捷编辑,消耗模型 Token 少,且内置基础 LLM 模型,保证开箱即用。
https://github.com/WEIFENG2333/VideoCaptioner