别再抄网上的 sysctl 调参模板了
网上一搜 TCP 优化,全是同一套 sysctl.conf 参数抄来抄去。问题是:你那台机器的带宽、延迟、有没有限速器,跟别人完全不一样,固定参数套上去,轻则没效果,重则适得其反。
tcpfit 的思路不一样——它先给机器"画像",再实测带宽,甚至扫描限速器拐点,最后才推导出专属这套环境的缓冲区参数。不猜,不套模板。
它做了什么
一键调优(tcpfit tune)总共调整 32 个 sysctl 参数,涵盖:
- 拥塞控制:启用
BBR+fq队列 - 缓冲区:
tcp_rmem/tcp_wmem/rmem_max/wmem_max/tcp_mem——按实测 BDP(带宽延迟积)推导,不是固定值 - 窗口缩放:
tcp_window_scaling/tcp_moderate_rcvbuf/tcp_adv_win_scale - 队列与连接:
netdev_max_backlog/somaxconn/tcp_tw_reuse/tcp_fin_timeout等 - 起步加速:
tcp_slow_start_after_idle=0+initcwnd 32 - 出向整形:HTBG 全局上限 + fq 叶子 pacing,按实测拐点设置
最有意思的是拐点扫描(policer sweep):先不限速跑一次,如果丢包率高说明有服务商限速器,就往上扫实测吞吐,找出限速拐点,再针对性整形——把限速器的便宜占满,又不触发惩罚。
怎么用
# 一键安装
bash <(curl -fsSL https://raw.githubusercontent.com/Kylin010/tcpfit/main/tcpfit.sh)
# 跑完直接出菜单,选 1 全自动调优(约 10 分钟,只问三个问题)
tcpfit
# 或者用子命令精确控制
tcpfit detect # 机器画像
tcpfit probe --peer <iperf3服务器> # 探测可用带宽
tcpfit tune --role proxy --bw 500 # 基础调优
tcpfit shape --rate 510 # 应用整形
tcpfit sweep --peer <服务器> --nominal 500 # 拐点扫描
tcpfit rollback # 按快照回滚
首次改动前会自动保存快照到 /var/lib/tcpfit/pre-tune.snapshot,回滚是按快照逐项写回,不是粗暴恢复默认。改动只落在 /etc/sysctl.d/99-tcpfit.conf 等文件,不碰 /etc/sysctl.conf。老版本 nettune 的产物也会自动检测并搬迁,快照回滚都保留。
适合谁
- 跑代理、机场、中转的服务器,想榨干带宽
- 被服务商限速搞烦了,想找到拐点精准整形的人
- 多台机器想批量调优的(自带
orchestrator/fleet.py,支持--only/--tag/ 并发)
要注意
- 需要 Linux + systemd + iproute2,OpenVZ/LXC 上
tc和initcwnd可能受限 - 瓶颈在国际链路而非端口时,整形不会带来提升(但输出看起来一切正常)
sweep需要一台近处的 iperf3 对端
总结
tcpfit 的核心价值是**"实测优先"**:用工具代替猜测,用数据代替模板。对跑在限速环境下的机器,它比任何固定参数方案都更靠谱。
▶ 前往 GitHub 仓库 · 430 ★