打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

如何让你的VPS速度更快:基于BDP原理的单线程极限测速与TCP调优实践:修订间差异

来自md5.pw
Air留言 | 贡献
无编辑摘要
Air留言 | 贡献
无编辑摘要
 
第32行: 第32行:
==== 1. 编辑系统文件 ====
==== 1. 编辑系统文件 ====


SSH 登录到服务器,编辑系统控制文件:<syntaxhighlight lang="abap">
SSH 登录到服务器,编辑系统文件:<syntaxhighlight lang="abap">
vi /etc/sysctl.conf
vi /etc/sysctl.conf
</syntaxhighlight>进入 vi 编辑页面后,按下键盘 '''<code>i</code>''' 键进入编辑模式。
</syntaxhighlight>进入 vi 编辑页面后,按下键盘 '''<code>i</code>''' 键进入编辑模式。
'''提示:''' 如果在使用 <code>vi</code> 粘贴内容时遇到报错、卡顿或格式错乱等问题,可以先按 <code>ESC</code> 键输入 <code>:q!</code> 强制退出,然后执行命令 <code>echo "set clipboard=unnamed" >> ~/.vimrc</code> 来开启剪贴板支持并优化配置,之后再重新执行 <code>vi</code> 命令进入编辑即可。


==== 2. 选择并写入 TCP 缓冲区参数 ====
==== 2. 选择并写入 TCP 缓冲区参数 ====
第66行: 第68行:
==== 3. 保存并使配置生效 ====
==== 3. 保存并使配置生效 ====
粘贴完成后,按下键盘 '''<code>ESC</code>''' 键退出编辑模式,接着输入 '''<code>:wq</code>'''(写入并退出)并回车。 最后,执行以下命令让刚才的修改立即生效:<syntaxhighlight lang="abap">
粘贴完成后,按下键盘 '''<code>ESC</code>''' 键退出编辑模式,接着输入 '''<code>:wq</code>'''(写入并退出)并回车。 最后,执行以下命令让刚才的修改立即生效:<syntaxhighlight lang="abap">
sudo sysctl -p
sysctl -p
</syntaxhighlight>
</syntaxhighlight>



2026年3月10日 (二) 04:23的最新版本

搬瓦工(BandwagonHost)的中国优化线路,已经是目前普通中国消费者能以较低价位获取到的、速度最顶级的中美网络线路,其本身的线路质量和物理速度毋庸置疑。

然而,很多朋友购买了搬瓦工的中国线路优化套餐后,实际使用中可能会遇到了一个奇怪的问题:多线程测速(如 Speedtest)能跑满带宽,但用浏览器单线程下载文件时,速度却到不到预期。

为了验证并解决这个问题,我使用了 DC6、DC9、DC99 三个机房的服务器进行了测试与底层调优。

一、核心原因:什么是 BDP?为什么跑不满服务器带宽

要解决问题,首先要找到原因。很多人忽略了跨国网络传输中的一个核心物理限制。

1. 理论基础

对于BDP,可以参考在维基百科中的定义:

Bandwidth-delay product is the product of a data link's capacity (in bits per second) and its round-trip delay time (in seconds).

(带宽延迟乘积 = 数据链路的容量 × 往返延迟时间)

2. 场景代入

搬瓦工的美国机房(如 DC6/DC9)到中国的物理距离很远,平均网络延迟(RTT)大约在 150ms (0.15秒) 以上。同时,它的网络端口极大(2.5Gbps+)。这种“高延迟 + 大端口”的网络,在计算机网络中被称为 LFN(Long Fat Network,长胖网络)

TCP 协议在传输数据时,需要等待对方的“确认接收(ACK)”才会发送下一批数据。这就好比你在一个长长的管道里运水,如果你的“水桶(TCP 窗口/缓冲区)”太小,水管(带宽)再粗也没用,因为你每次只能运那么一小桶,还要等 0.15 秒以上才能送下一桶。

3. 数据测算

这里做个假设: 我们要在这条 150ms 延迟的路线上,跑满 1Gbps 的单线程速度。

通过计算可知: BDP = 1,000,000,000 bps × 0.15s = 150,000,000 bits = 18.75 MB

也就是说,Linux 系统的 TCP 接收/发送缓冲区至少需要 18.75 MB,才能跑满 1Gbps 的网络端口! 而搬瓦工默认的 Linux 系统(如 Debian 12 )的 TCP 缓冲区是没有设置的,也就是说实际 TCP 缓冲区仅有默认的5M以下。这就是单线程速度跑不快的最根本原因!

二、调优实战:修改内核参数,提高速度上限

既然知道了原因,解决办法就很简单了:开启拥塞控制算法(BBR),并强行放大系统的 TCP 缓冲区限制。搬瓦工的服务器目前都默认开启了 BBR ,所以我们只需要直接修改缓冲区大小。

1. 编辑系统文件

SSH 登录到服务器,编辑系统文件:

vi /etc/sysctl.conf

进入 vi 编辑页面后,按下键盘 i 键进入编辑模式。

提示: 如果在使用 vi 粘贴内容时遇到报错、卡顿或格式错乱等问题,可以先按 ESC 键输入 :q! 强制退出,然后执行命令 echo "set clipboard=unnamed" >> ~/.vimrc 来开启剪贴板支持并优化配置,之后再重新执行 vi 命令进入编辑即可。

2. 选择并写入 TCP 缓冲区参数

根据你的实际需求,选择以下两种方案之一,将其复制并粘贴到配置文件的最末尾。

方案 A:均衡版参数(推荐)
  • 定位: 将单线程理论峰值控制在 1Gbps (约 125MB/s) 左右。
  • 优点: 足够满足日常 4K/8K 观影和快速下载需求。避免速度过高导致流量消耗过快,同时降低因单线程长时间超大流量传输而引起中国防火墙(GFW)注意和封锁的风险
# --- TCP 缓冲区调优 (均衡版 16MB) ---
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
方案 B:激进版参数
  • 定位: 理论极限峰值可跑满 2.5Gbps 甚至更高
  • 优点: 极限发挥搬瓦工 DC6 等顶级机房的全部物理带宽,适合测速跑分或极端大文件内网传输。
# 放大 TCP 缓冲区 (最大 32MB解决高延迟大带宽 BDP 瓶颈)
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_window_scaling = 1

3. 保存并使配置生效

粘贴完成后,按下键盘 ESC 键退出编辑模式,接着输入 :wq(写入并退出)并回车。 最后,执行以下命令让刚才的修改立即生效:

sysctl -p

三、iperf3 测速对比结果:调优前 vs 调优后

为了最直观地看到效果,避免其他不稳定因素干扰测试结果,我们使用网络测试工具 iperf3 ,让我们可以测试服务器到本地的单线程极限速度。

1.测速环境与工具准备

  • 请使用debian12系统,其他版本或者系统的可能不适用。
  • 在搬瓦工 VPS 上安装服务端(安装弹出的提示选NO):apt install -y iperf3
  • 在本地电脑(或另一台国内服务器)下载并运行运行客户端:官网连接

我们分别对 DC6 、DC9 和 DC99 机房进行 单线程极限测试(加 -R 参数测试 VPS 到本地的下载速度)。

测试命令:iperf3 -c [你的VPS_IP] -P 1 -R

2.默认状态测速(未调优)

【DC6 机房 - 调优前测速截图】

【DC99 机房 - 调优前测速截图】

【DC9 机房 - 调优前测速截图】

3.增加调优参数后测速

【DC6 机房 - 调优后测速截图】

【DC99 机房 - 调优后测速截图】

【DC99机房 - 调优前测速截图】

4.数据总结与对比分析

由于我用于测试的服务器位于中国的国际网络出口端,所以与 DC6、DC9 和 DC99 的连通性本来就较好,峰值速度提升有限。但是通过数据和曲线可以看到,调优后速度拉升更快,稳定区间更高、更平滑。 后续我将补充上更多地区的实际测试数据。

四、最后总结

1.带宽 ≠ 实际速度: 使用大带宽的搬瓦工中国线路优化服务器,并不意味着任何情况下网络都能起飞。面对中美之间的高延迟网络 (LFN),底层协议的 TCP 窗口调优至关重要。

2.按需选择调优策略: 不建议盲目追求极限速度。对于绝大多数场景,“均衡版参数”是最比较合适的选择,既能保证丝滑体验,又能有效规避流量异常导致的封禁风险。

3.单线程才是真是体验: 测速不能参考 Speedtest 多线程并发跑出来的数据。用 iperf3 -P 1 测出来的单线程速度,才是你建站、传文件、拉取 Docker 镜像时真正能体验到的速度。

4.进阶调优建议: 如果你对调优有更多想法,可以参照 NodeSeek 大佬的调优专用网站,选择更适合自己的调优参数。https://omnitt.com/