如何科学地给VPS进行测速?
在选择VPS时,很多用户习惯使用网络上流传的“VPS测速脚本”。然而VPS工具网并不推荐这种做法,原因有以下几点:
为什么不推荐使用网络上的测速脚本?
- 安全性问题:这些脚本往往来自不知名的个人网站,直接通过
curl
或wget
下载并执行 Bash 脚本是非常不明智的做法。即使脚本托管在 GitHub 上,仍然不应该百分之百信任,因为最终背后还是人。 - 更新频率慢:这些脚本的更新频率往往远不及主流 Linux 包管理系统中的 benchmark 工具。例如,
sysbench
就已经足够满足我们对 CPU、磁盘 IO、内存的测试需求,不需要额外依赖这些三方脚本。 - 测量不准确:一些脚本通过简单查询
/proc/cpuinfo
来统计 CPU 核心数,错误地将其作为“CPU 测速”,显示出脚本作者对服务器性能测试的浅薄理解。尽管如此,这些低质量的工具却常常出现在很多 VPS 推荐清单中。
我个人也不依赖任何厂商提供的测速(Speedtest)节点。并不是说厂商故意作弊(虽然这在一些小厂商中可能发生),而是因为测试节点的配置往往不透明,且无法验证是否具备代表性。这些节点有时还可能受到 IP 暴露带来的干扰,因此它们的测速结果往往不具备实际意义。
相反,我更倾向于自己购买 VPS 进行测速,先测再用。这种做法虽然笨拙,但更为可靠。
磁盘 IO、CPU、内存性能测试
对于性能测试,sysbench
是一款非常实用的工具,能够帮助我们测试 CPU、磁盘 IO、内存等性能。其使用方法非常简单,可以通过 sysbench --help
获取详细说明,或者参考 这篇教程。
以磁盘 IO 测速为例,下面是一个常用的命令:
sysbench fileio prepare
sysbench fileio --file-test-mode=rndrw run
国内某云计算厂深圳节点(4 核 8GB 内存)的测试结果:
File operations:
reads/s: 718.79
writes/s: 479.19
fsyncs/s: 1522.55
Throughput:
read, MiB/s: 11.23
written, MiB/s: 7.49
General statistics:
total time: 10.0003s
total number of events: 27217
Latency (ms):
min: 0.00
avg: 0.37
max: 25.48
95th percentile: 0.97
sum: 9978.72
Threads fairness:
events (avg/stddev): 27217.0000/0.00
execution time (avg/stddev): 9.9787/0.00
硅谷某知名 VPS 供应商(单核 2GB 内存)测试结果:
File operations:
reads/s: 4249.99
writes/s: 2833.39
fsyncs/s: 9066.85
Throughput:
read, MiB/s: 66.41
written, MiB/s: 44.27
General statistics:
total time: 10.0079s
total number of events: 161523
Latency (ms):
min: 0.00
avg: 0.06
max: 5.16
95th percentile: 0.16
sum: 9923.94
Threads fairness:
events (avg/stddev): 161523.0000/0.00
execution time (avg/stddev): 9.9239/0.00
VPS厂商的磁盘IO速度我认为是很能说明问题的,因为磁盘IO直接决定绝大多数应用的基础性能,服务商的技术架构、销售模式、管理水平多少都体现在上面了。上面的结果虽然只是单次测速,但它是一个让VPS用户无法忽视的结果,这种情况也是很多时候做VPS推荐容易翻车的原因,VPS分了多少个CPU核心,多少G内存,多少G硬盘是可见的,而其它很多东西对普通用户来说就不是这么一目了然了,这就是很多VPS老玩家挂在嘴边的“这行的水很深”。
网络测速
- 本机 Ping:判断一台 VPS 服务器是否适合架设某些应用,最直接的方法是在 24 小时内取几个时间点从本机多次 Ping 该 VPS(确保服务器的 ICMP 协议已打开),观察延迟和 Ping 通率。延迟过高(>250ms)或 Ping 通率过低(<80%)的服务不建议考虑。
- 本机 SSH:SSH 连接质量决定你的 VPS 以后管理起来方不方便,网络干扰是一个很大的变量。笔者曾经遇到过 Ping 连接正常但 SSH 一连接就掉线的 VPS,也有几个月都不掉线的 VPS。
- SCP / SFTP 下载:在 VPS 上创建一个大文件,使用 SCP 或 SFTP 进行下载。由于 SCP/SFTP 是基于 SSH 加密链路的,因此它更接近实际网络传输情况,可以作为可靠的测速方式。如果下载速度低于 640KB/s,则可能无法顺畅观看 720P 流媒体视频。
- SCP / SFTP 上传:如果你打算将 VPS 用作网盘,上传速度同样是一个不容忽视的因素。通过 SCP 或 SFTP 进行上传测试,可以验证 VPS 的上传能力。你也可以通过客户端工具如 WinSCP 来完成测试。
综合测速
在完成以上单项测试后,你可以进一步对 VPS 进行应用级别的综合测速。
- Web 服务性能测试:如果是搭建网站,你可以使用 WebPageTest、GTMetrix 或 ChinaZ 等工具进行网站测速。但要注意,影响网站加载速度的因素很多,服务器性能只是其中之一。确保你理解这一点。
- 非 HTTP 协议应用测试:如果你的应用不依赖于 HTTP 协议,那么你应该使用对应的客户端进行实际的应用性能测试。通过真实的操作来观察 VPS 与应用之间的匹配度。
笔者通常会在多台候选 VPS 上部署相同的应用,进行对比测试,最终选择表现最优的一台来购买。