这是一篇网络调优笔记。很多人买完高端双程优化线路的 VPS、搭好代理节点后,ping 很低但看 4K 还是卡——问题几乎都在 Linux 默认内核参数。下面把 TCP 调优在调什么讲清楚,并给出可直接用的参数和一键面板。操作前请确认你对服务器有 root 权限,改动前备份原配置。
买完 VPS、搭好节点后,很多人会纳闷:为什么 ping 明明很低,看 4K 还是频繁转圈?答案几乎都在 Linux 默认内核的网络参数上。今天用最直白的话,聊聊 TCP 调优到底在调什么,以及它为什么是压榨跨境链路带宽的“最后一公里”。
一、默认内核的两个“带宽黑洞”
Linux 默认网络参数是二十多年前为局域网/低带宽环境设计的,在动辄 1Gbps 的现代跨国公网面前有两个致命瓶颈:
1. 缓冲区太小(大马拉小车)哪怕源站 VPS 带宽是 1Gbps 的“消防水管”,Linux 默认的 TCP 发送/接收缓冲区(Buffer)却极窄。数据只能一小勺一小勺喂给客户端,长距高带宽(LFN)网络的效率被直接锁死上限。
2. 悲观的拥塞算法(见丢包就“自残”)默认旧算法 Cubic 行为很悲观:跨境链路稍微丢一点包,它就误以为网络瘫痪,直接把发送速度砍掉一半。晚高峰跨境公网里 5% 以内的随机丢包再正常不过,Cubic 这种“一见丢包就自残”正是刷视频断流的元凶。
二、TCP 调优在干什么
针对上面两个痛点,调优本质是在内核底层做两件事:
- 撑开缓冲区:调大 rmem / wmem 最大内存限制,把 TCP 窗口(Window Size)彻底撑开——把饮水吸管换成消防水管。
- 激活 BBR 引擎:开启 Google 的 BBR 拥塞控制算法,不再盲目因丢包减速,而是实时测量物理链路的真实容量与延迟。只要管道没满,哪怕有丢包也顶着极限速度发。
三、直接可用的参数
把下面这段写进 /etc/sysctl.d/99-tcp-tuning.conf(或 sysctl.conf),再 sysctl -p 生效:
# 开启 BBR 拥塞控制 net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr # 极大化 TCP 读写缓冲区,专治大带宽长延迟(LFN)网络 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # 优化滑动窗口与快重传 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_sack = 1
生效后用 sysctl net.ipv4.tcp_congestion_control 确认输出是 bbr 即可。
四、嫌麻烦?用一键面板
不想手敲,可以在服务器上直接跑作者提供的面板脚本(开源地址 github.com/666shen/tcp-dashboard):
bash <(curl -sL tcp.vpsing.de)
按 1–4 的步骤依次走,就能完成深度调优;以后用快捷命令 t 直接呼出面板。
注意:① 改 sysctl 前先备份原配置,避免手滑断网;② BBR 需要内核 ≥ 4.9,老内核先升级;③ 参数里的缓冲区上限 16MB 适合大带宽长延迟链路,普通低延迟小带宽场景不必盲目拉满;④ 面板脚本来自第三方,跑之前看一眼源码。
总结
VPS 搭好节点只是第一步,TCP 调优才是把带宽跑满的最后一公里:撑开缓冲区 + 切到 BBR。ping 低但看视频卡,八成就是 Cubic 在“自残”,换 BBR 立竿见影。