logo NodeSeekbeta

[摸鱼测鸡]搬瓦工NODESEEK-BIGGERBOX-PRO PK DMIT LAX.Pro.MALIBU

  • 瓦工的电移表现会不会好一些

  • @Wa1ter #30 探针上基本都是(我这是挺鸡汁的,不过沪爷...用啥都挺鸡汁的吧)

  • dmit的默认tcp调优跟瓦工不一样 不应该单线程差这么多 dmit这个单线程速度明显调过或者默认参数就是调过的

  • @minikoro #29 怎么调都没用,然后就没管了,日常用是没什么问题

  • 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
    
  • @AndyCort #34 可以拿我置顶评论的方法试试 或者论坛别人的

  • @flashlab #31 应该是会更好 之前的瓦工没TCP调优 都重测了

  • 这个测评是真的详细,点赞👍🏻

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72132位seeker

🎉欢迎新用户🎉