测试服务器性能(CPU、磁盘)
在比较不同套餐,或比较 VPS 与独立服务器时,用同样的方法亲自测一测,会更容易判断。以 Linux(Ubuntu、Debian)为准。
测试期间会最大限度地占用 CPU 和磁盘。如果服务器上已经在运行服务,请在用户较少的时段进行。
CPU:单个核心与全部核心
sudo apt install -y sysbench
sysbench cpu --threads=1 --time=10 run
sysbench cpu --threads=$(nproc) --time=10 run
结果中的 events per second 越大越快。
--threads=1—— 单个核心的性能。如果是像 Minecraft 服务器这样单个核心很重要的程序,请比较这个数字。--threads=$(nproc)—— 所有核心一起使用时的性能。如果要运行多个程序,或要分摊处理任务,请比较这个数字。
哪种程序属于哪一类,请参考单核?多核?。
sysbench 是反复进行简单计算的测试,与实际程序的性能并不完全相同。请将其用于在服务器之间用相同命令进行比较。
磁盘
简单测试:写入速度
dd if=/dev/zero of=dd-test.tmp bs=1M count=1024 oflag=direct status=progress
rm dd-test.tmp
最后一行末尾的速度(MB/s 或 GB/s)是连续写入大文件的速度。
详细测试:小文件读写
像数据库或保存游戏世界这样频繁读写小数据的工作,用下面的测试更能体现出来。
sudo apt install -y fio
fio --name=test --filename=fio-test.tmp --size=1G --rw=randrw --rwmixread=70 --bs=4k --ioengine=libaio --iodepth=32 --direct=1 --runtime=30 --time_based --group_reporting
rm fio-test.tmp
read: IOPS=…、write: IOPS=…—— 每秒处理的读、写次数。越大越好。BW=—— 每秒吞吐量。
两种测试都会创建测试用文件(1GB),因此磁盘需要有剩余空间,结束后请务必用 rm 删除。
测量网络速度时请注意
测速工具会收发大量数据,因此会消耗流量。
- 普通网络超过每日流量配额后,当天剩余时间内会被限速。
- 安全网络使用的是订购时确定的流量容量,如果在测试中用掉,可能需要额外购买。
如果目的是确认游戏或连接变慢的原因,很多情况下测量一下从本地电脑到服务器的响应时间(ping)就足够了。
ping server-ip
Windows 请在命令提示符中执行,Mac、Linux 请在终端中执行。(Mac、Linux 按 Ctrl + C 停止)Windows 服务器由于默认的防火墙设置,可能不会响应 ping。
比较结果时
- 同一命令请测两三次,确认数值是否相近。VPS 是共用物理服务器的结构,每次测量的结果可能会略有不同。
- 只有让要比较的服务器操作系统和命令完全一致,比较才有意义。
- 比数字更重要的是实际程序能否顺畅运行。查看使用率的方法请参考服务器变慢时的排查。