目的

在当前运营Peekabo CDN的过程中, 涉及到一些系统和网络性能方面的微调, 在Codex和Claude的帮助下(全权负责),只做了一个方便使用且满足个人场景需求的内核调参脚本.

特性

  • 自动加载BBR/kTLS内核模块

  • BDP计算TCP的接收/发送缓冲区

  • 各个场景中根据RTT对initcwnd调整

  • BBR算法以及不通场景下的其它拥塞控制算法

  • 连接池管理优化(高配激进性能/低配安全兜底)

  • 网络栈超时参数调整(WEB/CDN场景下遭受应用层攻击快速释放僵尸连接)

  • 网络栈连接容量调整(避免内核默认值过小导致拥堵)

  • fq队列调整(根据内存及带宽情况调整fq_limit,避免bbr的pacing效率不够但队列过小导致丢包)

  • 物理机网卡Ring Buffer调整

  • 网卡qlen调整

  • TSO/GSO启停控制

  • conntrack参数管理(使用内核防火墙场景用到)

  • 启用/禁用IP转发

  • 启用/禁用ICMP Echo

  • 启用/禁用IPv6网络栈(内核默认V6优先, V4Only机器从v6回退造成不必要的开销)

  • 系统资源限制调整(解除/增量)

  • IRQ绑核

  • RPS/XPS配置

  • TCP调优对代理场景/CDN边缘场景/WEB应用服务器场景分别算法

脚本运行如图

使用方法

bash <(curl -fsSL https://sh.xay.zone/tcp-edge.sh)

使用步骤建议

TCP调优部分(功能编号: 1)

  • 执行0 (清除所有参数)

  • 执行1 (TCP调优)

  • 输入RTT延迟 (机器Ping延迟)

  • Select network card offload settings 设置(极度依赖cpu性能), 4核心以上可以选择2关闭TSO/GSO避免TSO与BBR Pacing冲突以获取更高的传输稳定性更低的重传, 4核心以下低配置机器选择2会对吞吐劣化,低配建议选择1, 吞吐优先

  • 接下来选择服务器应用场景,代理或者转发选1,CDN选2,后端建站服务器选3

  • 选择机器带宽, 1Gbps/10Gbps/40Gbps

  • 默认计算缓冲区可以直接填0, 也可以手动输入缓冲区数值,单位MB

  • 接下来直接回车可以默认使用BBR+FQ算法, 也可以自定义

  • Configure Conntrack (nf_conntrack) now是否配置Conntrack, 如果使用Docker/使用iptables或nftables进行转发或防护策略, 填y启用

IP转发部分(功能编号: 3)

如果使用Docker的网桥或者使用nftables/iptables等内核进行转发,务必打开,否则用不上就不用开

系统资源调整部分(功能编号: 4)

建议无脑使用

禁用IPv6网络栈(功能编号: 7)

机器无v6网络或不需要使用v6网络强烈建议禁用

注意事项

由于个人基本使用Debian系统, 故该脚本仅仅在Debian11/12/13系统中进行了充分测试