TCP调优用的我之前的方法 初始化/etc/sysctl.conf配置 cat > /etc/sysctl.conf << EOF # TCP优化配置(适用于代理服务器) # 设置默认队列纪律为fq net.core.default_qdisc=fq # 使用BBR拥塞控制算法,提升吞吐量 net.ipv4.tcp_congestion_control=bbr # TCP接收和发送缓冲区 net.ipv4.tcp_rmem=8192 131072 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 # 增加SYN队列长度,应对高并发 net.ipv4.tcp_max_syn_backlog=4096 # 启用SYN cookies,防止SYN洪水攻击 net.ipv4.tcp_syncookies=1 # 设置keepalive,释放不活跃连接 net.ipv4.tcp_keepalive_time=600 # 空闲600秒后探测 net.ipv4.tcp_keepalive_intvl=60 # 探测间隔60秒 net.ipv4.tcp_keepalive_probes=5 # 探测5次后关闭 # 缩短FIN_WAIT_2超时时间 net.ipv4.tcp_fin_timeout=30 # 启用TIME_WAIT连接重用和快速回收 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 # 启用窗口缩放,优化高带宽延迟网络 net.ipv4.tcp_window_scaling=1 # 启用SACK、DSACK和FACK,提升丢包性能 net.ipv4.tcp_sack=1 net.ipv4.tcp_dsack=1 net.ipv4.tcp_fack=1 # 启用MTU探测,避免IP分片 net.ipv4.tcp_mtu_probing=1 # 禁用慢启动重启,加速恢复 net.ipv4.tcp_slow_start_after_idle=0 # 设置TCP内存阈值(单位:页面,通常4KB) net.ipv4.tcp_mem=786432 1048576 1572864 # 设置TIME_WAIT最大连接数 net.ipv4.tcp_max_tw_buckets=200000 # 设置孤立套接字最大数量 net.ipv4.tcp_max_orphans=262144 # 设置SYN和ACK重传次数 net.ipv4.tcp_syn_retries=3 net.ipv4.tcp_retries2=5 # 启用快速重传和恢复 net.ipv4.tcp_frto=2 # 启用时间戳,提升RTT估计 net.ipv4.tcp_timestamps=1 # 启用低延迟模式 net.ipv4.tcp_low_latency=1 # 启用ECN,优化拥塞处理 net.ipv4.tcp_ecn=1 # 设置缓冲区最大值 net.core.rmem_max=16777216 net.core.wmem_max=16777216 # 设置listen队列长度 net.core.somaxconn=4096 # 设置网络设备接收队列最大包数 net.core.netdev_max_backlog=30000 # 设置初始拥塞窗口和接收窗口 net.ipv4.tcp_init_cwnd=10 net.ipv4.tcp_init_rwnd=10 # 启用TCP Fast Open,加速连接 net.ipv4.tcp_fastopen=1 # 设置本地端口范围 net.ipv4.ip_local_port_range=1024 65535 EOF sysctl -p && sysctl --system 创建BlackSheep大佬第二种调优方法的懒人脚本 TARGET_DIR="/app/tcp"; SCRIPT_NAME="setup_traffic_control.sh"; CONFIG_FILE="/app/tcp/bandwidth.conf"; mkdir -p $TARGET_DIR && touch $CONFIG_FILE && echo '#!/bin/bash' > $TARGET_DIR/$SCRIPT_NAME && cat <<EOF >> $TARGET_DIR/$SCRIPT_NAME && chmod +x $TARGET_DIR/$SCRIPT_NAME # 获取第一个以太网接口名称 INTERFACE=\$(ip -o link show | grep 'link/ether' | awk -F': ' '{print \$2}' | head -n 1) echo "网络接口名称: \$INTERFACE" # 检查参数 if [ "\$1" != "-y" ] && [ "\$1" != "-n" ]; then echo "无效的参数。请使用 -y 或 -n。" exit 1 fi # 系统自动执行或用户执行 if [ "\$1" = "-n" ]; then # 系统自动执行,从配置文件中读取带宽值 if [ -f "/app/tcp/bandwidth.conf" ]; then source /app/tcp/bandwidth.conf else echo "配置文件 /app/tcp/bandwidth.conf 不存在,请手动执行脚本并输入带宽值。" exit 1 fi elif [ "\$1" = "-y" ]; then # 用户执行,交互式输入带宽值 read -e -p "请输入瓶颈带宽值 (单位 Mbit/s): " BANDWIDTH echo "瓶颈带宽值: \$BANDWIDTH Mbit/s" # 保存带宽值到配置文件 echo "BANDWIDTH=\$BANDWIDTH" > /app/tcp/bandwidth.conf fi # 检查变量是否为空 if [ -z "\$INTERFACE" ] || [ -z "\$BANDWIDTH" ]; then echo "网络接口名称或瓶颈带宽值不能为空,请重新输入。" exit 1 fi # 删除现有的队列调度 echo "正在删除现有队列调度..." tc qdisc del dev \$INTERFACE root 2>/dev/null || true # 添加 htb 队列调度 echo "正在添加 HTB 队列调度..." tc qdisc add dev \$INTERFACE root handle 1:0 htb default 10 # 对所有源IP进行限速 echo "正在设置所有源IP的带宽限制..." tc class add dev \$INTERFACE parent 1:0 classid 1:1 htb rate \${BANDWIDTH}mbit ceil \${BANDWIDTH}mbit tc filter add dev \$INTERFACE protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1 # 对所有目的IP进行限速 echo "正在设置所有目的IP的带宽限制..." tc class add dev \$INTERFACE parent 1:0 classid 1:2 htb rate \${BANDWIDTH}mbit ceil \${BANDWIDTH}mbit tc filter add dev \$INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:2 # 查看配置是否生效 echo "显示当前配置..." tc qdisc show dev \$INTERFACE tc class show dev \$INTERFACE tc -s filter show dev \$INTERFACE EOF 为了开机自启加了个脚本参数 使用-y参数需要手动输入瓶颈宽带值 调整参数也执行该命令 /app/tcp/setup_traffic_control.sh -y 脚本执行后会将上次输入的瓶颈宽带值记录至配置文件,所以输入-n参数就是为了后续重启机器后自动执行脚本用的,当然你也可以手动执行会加载你上次输入的瓶颈宽带值 /app/tcp/setup_traffic_control.sh -n 开机自启我用的系统服务 创建系统服务 cat << EOF > /etc/systemd/system/tcp_traffic_control.service [Unit] Description=TCP Traffic Control Setup After=network.target [Service] Type=oneshot ExecStart=/app/tcp/setup_traffic_control.sh -n RemainAfterExit=true [Install] WantedBy=multi-user.target EOF 加载系统服务 sudo systemctl daemon-reload 启用服务 systemctl enable tcp_traffic_control.service
瓦工的电移表现会不会好一些
@Wa1ter #30 探针上基本都是(我这是挺鸡汁的,不过沪爷...用啥都挺鸡汁的吧)
dmit的默认tcp调优跟瓦工不一样 不应该单线程差这么多 dmit这个单线程速度明显调过或者默认参数就是调过的
@minikoro #29 怎么调都没用,然后就没管了,日常用是没什么问题
@monenty #33 更新测速了
TCP调优用的我之前的方法
初始化/etc/sysctl.conf配置
创建BlackSheep大佬第二种调优方法的懒人脚本
为了开机自启加了个脚本参数
开机自启我用的系统服务
创建系统服务
加载系统服务
启用服务
@AndyCort #34 可以拿我置顶评论的方法试试 或者论坛别人的
@flashlab #31 应该是会更好 之前的瓦工没TCP调优 都重测了
@yz #13 已经重测啦
这个测评是真的详细,点赞👍🏻