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

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

来自md5.pw
Air留言 | 贡献
创建页面,内容为“搬瓦工(BandwagonHost)的中国优化线路,已经是目前普通中国消费者能以较低价位获取到的、速度最顶级的中美网络专线,其本身的线路质量和物理速度毋庸置疑。 然而,很多朋友购买了搬瓦工的 '''2.5Gbps''' 甚至 '''10Gbps''' 超大带宽的套餐后,却在实际使用中可能会遇到了一个奇怪的问题:'''多线程测速(如 Speedtest)能跑满带宽,但用浏览器单线程下…”
 
Air留言 | 贡献
无编辑摘要
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
搬瓦工(BandwagonHost)的中国优化线路,已经是目前普通中国消费者能以较低价位获取到的、速度最顶级的中美网络线,其本身的线路质量和物理速度毋庸置疑。
搬瓦工(BandwagonHost)的中国优化线路,已经是目前普通中国消费者能以较低价位获取到的、速度最顶级的中美网络线,其本身的线路质量和物理速度毋庸置疑。


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


为了验证并解决这个问题,我使用了 '''DC6、DC9、DC99''' 三个机房的服务器进行了深度测试与底层调优。今天,我们不谈空洞的理论,直接上参数、看结果
为了验证并解决这个问题,我使用了 '''DC6、DC9、DC99''' 三个机房的服务器进行了测试与底层调优。


=== 一、核心原因:什么是 BDP?为什么你的G口的带宽跑不满===
=== 一、核心原因:什么是 BDP?为什么跑不满服务器带宽 ===
要解决问题,首先要找到原因。很多人忽略了跨国网络传输中的一个核心物理限制。
 
==== 1. 理论基础 ====
对于BDP,可以参考在维基百科中的定义:
对于BDP,可以参考在维基百科中的定义:


第12行: 第15行:
'''''(带宽延迟乘积 = 数据链路的容量 × 往返延迟时间)'''''
'''''(带宽延迟乘积 = 数据链路的容量 × 往返延迟时间)'''''


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


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


'''这里做个假设:''' 我们要在这条 150ms 延迟的路线上,跑满 '''1Gbps''' 的单线程速度。
==== 3. 数据测算 ====
这里做个假设: 我们要在这条 150ms 延迟的路线上,跑满 '''1Gbps''' 的单线程速度。


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


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


=== 二、调优实战:修改内核参数,提高速度上限 ===
=== 二、调优实战:修改内核参数,提高速度上限 ===
既然知道了原因,解决办法就很简单了:'''开启拥塞控制算法(BBR),并强行放大系统的 TCP 缓冲区限制'''
既然知道了原因,解决办法就很简单了:开启拥塞控制算法(BBR),并'''强行放大系统的 TCP 缓冲区限制'''。搬瓦工的服务器目前都默认开启了 BBR ,所以我们只需要直接修改缓冲区大小。
 
==== 1. 编辑系统文件 ====


搬瓦工的服务器目前都默认开始了 BBR ,所以我们只需要SSH 登录到服务器,编辑系统控制文件:<syntaxhighlight lang="abap">
SSH 登录到服务器,编辑系统文件:<syntaxhighlight lang="abap">
vi /etc/sysctl.conf
vi /etc/sysctl.conf
</syntaxhighlight>进入 <code>vi</code> 编辑页面后,按下键盘 <code>i</code> 键进入编辑模式,选择以下'''两种方案之一'''复制并粘贴进去然后下键盘 <code>ESC</code> 键退出编辑模式,然后输入 <code>:wq</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> 命令进编辑即可


=== 方案 A:均衡版参数(推荐) ===
==== 2. 选择并写入 TCP 缓冲区参数 ====
根据你的实际需求,选择以下'''两种方案之一''',将其复制并粘贴到配置文件的最末尾。


* '''定位:''' 将单线程极限峰值控制在 '''1Gbps (约 125MB/s)''' 左右。
===== 方案 A:均衡版参数(推荐) =====
* '''定位:''' 将单线程理论峰值控制在 '''1Gbps (约 125MB/s)''' 左右。
* '''优点:''' 足够满足日常 4K/8K 观影和快速下载需求。避免速度过高导致流量消耗过快,同时'''降低因单线程长时间超大流量传输而引起中国防火墙(GFW)注意和封锁的风险'''。
* '''优点:''' 足够满足日常 4K/8K 观影和快速下载需求。避免速度过高导致流量消耗过快,同时'''降低因单线程长时间超大流量传输而引起中国防火墙(GFW)注意和封锁的风险'''。
<syntaxhighlight lang="abap">
<syntaxhighlight lang="abap">
第44行: 第53行:
</syntaxhighlight>
</syntaxhighlight>


=== 方案 B:激进版参数 ===
===== 方案 B:激进版参数 =====
 
* '''定位:''' 理论极限峰值可跑满 '''2.5Gbps 甚至更高'''。
* '''定位:''' 极限峰值可跑满 '''2.5Gbps 甚至更高'''。
* '''优点:''' 极限发挥搬瓦工 DC6 等顶级机房的全部物理带宽,适合测速跑分或极端大文件内网传输。
* '''优点:''' 极限发挥搬瓦工 DC6 等顶级机房的全部物理带宽,适合测速跑分或极端大文件内网传输。
<syntaxhighlight lang="abap">
<syntaxhighlight lang="abap">
第56行: 第64行:
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_window_scaling = 1


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


=== 三、iperf3 测速对比结果:调优前 vs 调优后 ===
=== 三、iperf3 测速对比结果:调优前 vs 调优后 ===
为了最直观地看到效果,避免其他不稳定因素干扰测试结果,我们使用最硬核的网络测试工具'''iperf3'''。
为了最直观地看到效果,避免其他不稳定因素干扰测试结果,我们使用网络测试工具 '''iperf3 '''让我们可以测试服务器到本地的单线程极限速度


'''准备:'''
==== 1.速环境与工具准备 ====
* 请使用debian12系统,其他版本或者系统的可能不适用。
* 在搬瓦工 VPS 上安装服务端(安装弹出的提示选NO)<code>apt install -y iperf3</code>
* 在本地电脑(或另一台国内服务器)下载并运行运行客户端:[https://iperf.fr/iperf-download.php 官网连接]


# 请使用debian12系统,其他版本或者系统的可能步适用。
我们分别对 DC6 、DC9  和 DC99 机房进行 '''单线程极限测试'''(加 <code>-R</code> 参数测试 VPS 到本地下载速度)。
# 在搬瓦工 VPS 上安装服务端:<code>apt install -y iperf3</code>
# 本地电脑(或另一台国内服务器)下载并运行运行客户端:[https://iperf.fr/iperf-download.php 官网连接]


我们分别对 DC6 、DC9  和 DC99 机房进行 '''单线程极限测试'''(加 <code>-R</code> 参数试 VPS 到本地的下载度)。
'''测试命令:'''<code>iperf3 -c [你的VPS_IP] -P 1 -R</code>
 
==== 2.默认状态测速(未调优) ====
【DC6 机房 - 调优前速截图】
 
[[File:Iperfdc601.png|800x800px]]
 
【DC99 机房 - 调优前测速截图】
 
[[File:Iperfdc9901.png|800x800px]]
 
【DC9 机房 - 调优前测截图】
 
[[File:Iperfdc901.png|800x800px]]


试命令:<code>iperf3 -c [你的VPS_IP] -P 1 -R</code>
==== 3.增加调优参数后测速 ====
【DC6 机房 - 调优后速截图】


第一轮:系统默认状态(未调优)
[[File:Iperfdc602.png|800x800px]]


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


'''【DC9/DC99 机房 - 调优前测速截图】'''
[[File:Iperfdc9902.png|800x800px]]


第二轮:加载 BDP 调优参数后
【DC99机房 - 调优前测速截图】


'''【DC6 机房 - 调优后测速截图】'''
[[File:Iperfdc902.png|800x800px]]


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


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


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


'''3.单线程才是真是体验:''' 测速不要只看 Speedtest 那种几十个线程并发跑出来的数据。用 <code>iperf3 -P 1</code> 测出来的单线程速度,才是你建站、传文件、拉取 Docker 镜像时真正能体验到的速度。
'''3.单线程才是真是体验:''' 测速不能参考 Speedtest 线程并发跑出来的数据。用 <code>iperf3 -P 1</code> 测出来的单线程速度,才是你建站、传文件、拉取 Docker 镜像时真正能体验到的速度。


'''4.进阶调优建议:''' 如果你对调优有更多想法,可以参照 NodeSeek 大佬的调优专用网站,选择更适合自己的调优参数。https://omnitt.com/
'''4.进阶调优建议:''' 如果你对调优有更多想法,可以参照 NodeSeek 大佬的调优专用网站,选择更适合自己的调优参数。https://omnitt.com/
[[Category:300 VPS 设置与管理 — VPS Setup and Management]]
[[Category:300 VPS 设置与管理 — VPS Setup and Management]]

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/