logo NodeSeekbeta

【原创调优脚本】Tcpfit — 单线程 186 → 401 Mbps,动态 TCP 调优,优化线路机器通用一键开源脚本

tcpfit — 按每台机器实测推导的 TCP 调优脚本

xhj026 xhj026 xhj026 xhj026

一键脚本,通过免费 iperf3 服务器实测,全球 15 个城市 18 个节点,也可以用自己的机器

我已经在自己的所有优化机器,包括生产力机器上运行.由我自己(和claude)开发

0.4.2版本已经上线,修复了大量已知BUG!

xhj028

机器跑不满?G口只能跑200m?断流严重?看youtube卡顿?或许这个脚本可以帮到你!!


调优脚本非常多,但是我自己测试后可以放心在自己所有主力机器上使用.一个脚本即可做到调优所有优化机器

实测效果

测试机:VMISS 9929,500Mbps

TcpQuality 综合测速

image

image

九节点均值 回程 去程
原厂 144.0 Mbps 53.0 Mbps
tcpfit 471.1 Mbps 76.1 Mbps
3.27 倍 1.44 倍

单节点最高:上海电信 131.7 → 545.4 Mbps

回程重传次数从 149 涨到 323,但吞吐涨了 3.27 倍 —— 换算成每 Mbps 的重传降了 34%
去程只涨 1.44 倍是正常的:去程 = 国内往服务器发,发多快由国内那台说了算,服务器只能控制接收窗口。

单线程测速

image

image

平均 峰值
原厂 186.44 Mbps 217.83 Mbps
tcpfit 401.69 Mbps 485.72 Mbps

2.2 倍,原厂内核,不换内核不重启。

顺便看一眼 TQ 自己给的注释

图里那句「以美西为例:160ms延迟+4M发送缓存=理论单线程200Mbps」。

这台原厂发送缓冲就是 4M,RTT 164ms

4 MB × 8 ÷ 0.164s = 205 Mbps

而原厂实测峰值 217.83 —— 死死卡在天花板上

tcpfit 把它按 带宽 × RTT 抬到 18.1M,天花板变成 949 Mbps,实测峰值 485.72。


使用

bash <(curl -fsSL https://raw.githubusercontent.com/Kylin010/tcpfit/main/tcpfit.sh)

跑完出菜单,选 1 全自动。只问三个问题:

  1. 带宽多少 —— 不想扫拐点就填 0,已知限速值输入 m 直接指定
  2. 测速对端 —— 回车用免费公共节点,或填自己另一台机器的 IP
  3. 机器用途 —— 代理 / 大文件传输

装好之后敲 tcpfit 进菜单。

image


免费 iperf3 节点

脚本自带 18 个节点,会并发 ping 一圈自动选最近可用的,不用你操心:

地区 城市 提供方
亚太 香港 Leaseweb
新加坡 Leaseweb / OVH
东京 Leaseweb
悉尼 Leaseweb
欧洲 法兰克福 Leaseweb
阿姆斯特丹 Leaseweb / Clouvider
伦敦 Leaseweb / Clouvider
北美 洛杉矶 Leaseweb
旧金山 Leaseweb
西雅图 Leaseweb
达拉斯 Leaseweb
芝加哥 Leaseweb
纽约 Leaseweb
迈阿密 Leaseweb
蒙特利尔 Leaseweb

测的是你的端口能发多快,所以对端越近越准。 有自己的另一台机器就更好,那边跑 iperf3 -s,把 IP 填进去就行。


原理

一、基础调优

带宽 × RTT 算 BDP,缓冲区给 2 倍 BDP,上限跟内存挂钩(不超过 TCP 全局预算的 1/8)。

再加 BBR + fq、起步优化(slow_start_after_idle=0initcwnd 32)、队列和连接参数,共 32 项。

二、限速器拐点(iperf3)

先不限速跑一次:

  • 丢包低 → 你的口上没有限速器,不整形
  • 丢包高 → 有限速器,从实测吞吐往上扫找拐点

找到拐点后退一点安全余量,用 HTB 聚合限速 + fq 叶子 pacing 应用。

为什么限速反而更快(另一台 500M 机器实测):

不限速   吞吐 481 Mbps   10 秒重传 61,266 次
限到 530 吞吐 499 Mbps   10 秒重传      5 次

限速器看的是瞬时速率。不加 pacing 的 TCP 是突发式发送,平均没超也会被打穿。加上 fq 的逐包 pacing,就能贴着真实上限跑而几乎不丢包。

三、回滚

tcpfit rollback        # 完整回滚
tcpfit shape --off     # 只去掉整形,保留基础调优

首次改动前自动存快照,记录全部 33 项参数原始值。

所有改动位置:

/etc/sysctl.d/99-tcpfit.conf
/etc/systemd/system/tcpfit-qdisc.service
/usr/local/sbin/tcpfit-qdisc.sh
/etc/networkd-dispatcher/routable.d/50-tcpfit-initcwnd
/etc/modules-load.d/tcpfit-bbr.conf
/var/lib/tcpfit/

流量和时间

拐点扫描要真跑流量:

带宽 有限速器 没有限速器
300M 3.5 GB / 3 分钟 0.4 GB / 1 分钟
500M 8.8 GB / 4 分钟 0.7 GB / 1 分钟
1000M 22 GB / 4.5 分钟 1.5 GB / 1 分钟

先只测一档判断有没有限速器,没有就到此为止。超过 2500 Mbit 速率会提醒.

只要基础调优:菜单选 2,1 分钟,几乎不耗流量。


调不了什么

瓶颈在国际链路而不是你的端口时,调服务器没用。典型表现是不限速跑也不丢包,但到国内就是上不去 —— 这种情况脚本会报「未检测到限速器」,基础调优仍然生效,但整形那部分没有收益。


源码 https://github.com/Kylin010/tcpfit (MIT)

目前测试了自己所有优化机器,均有不同程度提升。包括那些只有个位数mbps的机器也拉到正常水平了。
如果你们有更好的意见,或者自己机器比较特殊,或者有什么需求,还是说想在群里交流学习都可以进来看看!
频道会发布更新,交流群是采纳意见和交流。 xhj015 xhj015 xhj015

TG频道 更新频道 xhj020
TG讨论群 讨论群 xhj020

  • 只有我一个人是负优化吗?

    dedirock 洛杉矶


    
    【优化前】
                                         北京                                       
          地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
      北京电信        3127     199.8Mbps      29.7Mbps       193ms       845ms
      北京联通           0     369.1Mbps      38.6Mbps       177ms       188ms
      北京移动          60       0.2Mbps      26.7Mbps       192ms       183ms
    
                                         上海                                       
          地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
      上海电信         383       3.4Mbps      62.9Mbps       183ms       181ms
      上海联通         778     326.9Mbps      54.8Mbps       265ms       154ms
      上海移动           0     222.3Mbps      83.0Mbps       267ms       162ms
    
                                         广东                                       
          地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
      广东电信         327     575.2Mbps      23.2Mbps       184ms       560ms
      广东联通         187       0.4Mbps       9.4Mbps       666ms       271ms
      广东移动          19       0.0Mbps      52.2Mbps       246ms       248ms
    
                                       AppleCDN                                     
          名称    下载重传      下载速度      上传速度    下载延迟    上传延迟
    Apple IPv4          10     365.6Mbps     169.2Mbps        99ms        79ms
    Apple IPv6           3     516.2Mbps     144.0Mbps        87ms        87ms
    
    
    
    【优化后】
    
                                             北京                                       
              地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
          北京电信        1131      14.3Mbps      12.3Mbps       178ms       439ms
          北京联通         173       0.4Mbps        failed       474ms       814ms
          北京移动         222       0.5Mbps        failed       416ms           -
    
                                             上海                                       
              地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
          上海电信        5708      56.0Mbps      56.6Mbps       183ms       330ms
          上海联通           0     331.8Mbps      72.2Mbps       252ms       255ms
          上海移动        8081     169.8Mbps       5.6Mbps       260ms       162ms
    
                                             广东                                       
              地区    回程重传      回程速度      去程速度    回程延迟    去程延迟
          广东电信         188       0.5Mbps      25.8Mbps       507ms       185ms
          广东联通         259       0.5Mbps      51.6Mbps       228ms       195ms
          广东移动           3     331.8Mbps      36.2Mbps       294ms       181ms
    
                                           AppleCDN                                     
              名称    下载重传      下载速度      上传速度    下载延迟    上传延迟
        Apple IPv4           0     343.2Mbps      88.4Mbps        83ms        83ms
        Apple IPv6           0     518.0Mbps     169.0Mbps        82ms        83ms
  • 支持支持,正在摸索,已经star了

  • 好倒霉.?刚发出来ns就崩溃了
    这个调优脚本超级牛逼!大家用用看!! xhj015 xhj015 xhj015

  • 你很久没请我吃鸡腿了

  • 前来支持一波~

  • 鸡腿+收藏
    支持! xhj020

  • 收藏收藏 xhj003

  • xhj003

  • 我来试试 谢谢佬 给你鸡腿

  • 卧槽,有这么好的脚本,怎么不早点告诉我 xhj016

  • 收藏收藏

你好啊,陌生人!

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

📈用户数目📈

目前论坛共有71718位seeker

🎉欢迎新用户🎉