博主时间(上海UTC+8)
摩羯座
发布于 2025-09-07 / 57 阅读

TCP调参

分享2个TCP调整工具,总有一款适合你的,或者只开BBR(以Ddebian为例)

在 Debian 系统中优化 TCP 网络性能是一个常见的系统管理任务,尤其对于高流量的 Web 服务器、数据库服务器、文件服务器或任何需要处理大量并发连接的应用来说至关重要。优化的核心是通过 sysctl 工具来调整内核参数。

核心原则

  1. 没有万能钥匙:最优参数取决于你的具体应用场景(例如,是高并发短连接,还是长连接大文件传输)、硬件配置和网络环境(高延迟、高带宽等)。

  2. 循序渐进:一次只修改一到两个相关参数,并进行基准测试,观察效果。不要盲目复制粘贴一堆参数。

  3. 做好备份:在修改 /etc/sysctl.conf 之前,先备份一份。

  4. 测试,测试,再测试:使用 iperf3, wrk, ab 等工具,在调整前后进行性能测试,用数据验证你的优化效果。

修改内核参数的方法

在 Debian 中,主要通过以下两种方式修改内核参数:

  1. 临时修改(重启后失效)

    sudo sysctl -w net.ipv4.tcp_syncookies=1
    
  2. 永久修改(推荐)
    将参数配置写入 /etc/sysctl.conf 文件或在 /etc/sysctl.d/ 目录下创建一个新的配置文件(例如 sudo nano /etc/sysctl.d/99-network-tuning.conf)。然后执行以下命令使其立即生效:

    sudo sysctl -p
    

    这样,每次系统启动时都会自动加载这些参数。


最重要的优化:启用 BBR 拥塞控制算法

对于现代的 Linux 内核(Debian 9 Stretch 及以后版本默认包含),启用 BBR 是最简单、最有效的网络优化手段,尤其是在有一定延迟和丢包的广域网(WAN)链路上,效果拔群。

BBR (Bottleneck Bandwidth and Round-trip propagation time) 是一种由 Google 开发的拥塞控制算法。与传统的基于丢包的算法(如 CUBIC)不同,BBR 通过主动探测网络的带宽和延迟来调整发送速率,从而在不造成拥塞的情况下更充分地利用网络带宽。

如何启用 BBR

  1. 检查内核版本确保你的内核版本足够新(4.9+)。

    uname -r
    # 输出应类似于 5.10.0-23-amd64 或更高
    
  2. 修改 sysctl 配置 创建或编辑 /etc/sysctl.d/99-bbr.conf 文件,并添加以下内容:

    # Use BBR congestion control
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr
    
    • net.core.default_qdisc = fq:设置默认的包调度队列算法为 fq (Fair Queue),这是 BBR 推荐的搭配。

    • net.ipv4.tcp_congestion_control = bbr:将 TCP 拥塞控制算法设置为 bbr

  3. 加载配置

    sudo sysctl -p
    
  4. 验证是否生效

    # 检查拥塞控制算法
    sysctl net.ipv4.tcp_congestion_control
    # 输出应为: net.ipv4.tcp_congestion_control = bbr
    
    # 检查 BBR 模块是否加载
    lsmod | grep bbr
    # 如果有 tcp_bbr 字样输出,则表示已成功加载
    

在绝大多数场景下,仅仅启用 BBR 就能带来显著的网络吞吐量提升。


深入调整:常用 TCP 参数详解

如果你想进行更精细的调优,可以考虑以下参数。这些参数通常放在一个自定义的 sysctl 配置文件中,如 /etc/sysctl.d/99-network-tuning.conf

内存和缓冲区相关

这些参数用于调整 TCP 套接字(Socket)的读写缓冲区大小,对于高带宽网络(如万兆网络)尤其重要。

# Increase TCP max buffer size setable using setsockopt()
# 允许应用程序设置的TCP接收/发送缓冲区的最大值
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# Increase Linux auto-tuning TCP buffer limits
# min, default, and max number of bytes to use
# TCP接收缓冲区的自动调优范围 (最小值, 默认值, 最大值)
net.ipv4.tcp_rmem = 4096 87380 16777216
# TCP发送缓冲区的自动调优范围
net.ipv4.tcp_wmem = 4096 65536 16777216
  • 解释:增大了 TCP 缓冲区的最大值和自动调优范围。这允许单个 TCP 连接使用更多内存来缓存数据,从而在“长肥网络”(高带宽 x 高延迟)中保持高吞吐量,避免因缓冲区满而等待。

TC调参工具分享

1.个人美化版TCP调参

👉点击打开使用/隐藏👈

2.进阶版TCP迷之调参

👉点击打开使用/隐藏👈


评论