用 sysbench 和 fio 做服务器基准性能测试的完整步骤

服务器基准性能测试的核心目的是用可重复的命令,把 CPU、内存、磁盘、网络的真实能力量化成数字,方便验收新机器、排查瓶颈或对比不同配置。
下面这套流程在主流 Linux 发行版上都能跑通,重点是每步都要有明确的输入和可核对的结果。

测试前要确认的环境和工具

开始之前,先确认你有一台可以随意读写磁盘的测试机。不要在正在跑业务的服务器上做写测试,因为 fio 的写入会覆盖或占满磁盘空间。

  • 系统:CentOS 7/8、Ubuntu 20.04/22.04、Debian 11 等常见版本均可。
  • 权限:需要 root 或 sudo 权限来安装软件和调整参数。
  • 空闲磁盘空间:建议至少 10 GB,用于 fio 测试文件。
  • 测试期间尽量关闭其他占用资源的服务,否则数据会失真。

安装工具包。
CentOS 系列执行:

yum install -y sysbench fio iperf3

Ubuntu/Debian 系列执行:

apt update && apt install -y sysbench fio iperf3

安装完成后用 sysbench --version、fio --version 验证,能输出版本号就说明可用。
如果提示找不到包,可以先执行 yum install -y epel-release 再重试,这是 CentOS 上常见的源问题。

CPU 与内存:用 sysbench 跑出可对比的分数

CPU 测试先看每秒能完成多少事件。
执行:

sysbench cpu --cpu-max-prime=20000 --threads=4 --time=30 run

参数含义:--cpu-max-prime 是计算质数的上限,数值越大负载越重;--threads 设为 CPU 核心数;--time=30 表示持续 30 秒。
结果里重点看 events per second,这个值越高越好。
跑两次取较高值,能减少冷启动带来的偏差。

内存测试换成 memory 模式:

sysbench memory --memory-block-size=1M --memory-total-size=10G --threads=4 run

输出中的 transferred 表示总传输量,Operations per second 反映内存吞吐。
内存测试对虚拟化环境比较敏感,同一台机器多次结果浮动超过 10% 时,要检查是否有其他进程在抢资源。

磁盘 IO:fio 测试要区分顺序和随机

磁盘是服务器基准性能测试里最容易出问题的一环。
先用顺序写测带宽:

fio --name=seqwrite --ioengine=libaio --direct=1 --rw=write --bs=1M --size=2G --numjobs=1 --runtime=60 --group_reporting

再测随机读,模拟数据库场景:

fio --name=randread --ioengine=libaio --direct=1 --rw=randread --bs=4k --size=2G --numjobs=4 --iodepth=32 --runtime=60 --group_reporting

关键参数解释:--direct=1 绕过系统缓存,测的是真实磁盘;--bs=4k 是块大小,4k 随机读写贴近数据库负载;--iodepth=32 是队列深度,SSD 需要较高深度才能跑满。
结果看 bw(带宽)和 iops。
机械硬盘的 4k 随机写 IOPS 通常在几百量级,SSD 则可达数万,差距非常明显。

测试文件默认写在当前目录,如果不希望污染系统盘,可以加 --directory=/data/fio 指定路径。
测试结束后记得手动删除生成的测试文件,否则会一直占着空间。

网络带宽:iperf3 需要两台机器配合

网络测试至少要两台机器,一台做服务端,一台做客户端。
服务端执行:

iperf3 -s

客户端执行(把 IP 换成服务端地址):

iperf3 -c 192.168.1.100 -t 30 -P 4

-t 30 表示测试 30 秒,-P 4 表示开 4 条并发连接。
结果看 sender 和 receiver 两行的 Mbits/sec。
如果带宽远低于预期,先检查是不是走了公网、中间有防火墙限速,或者网卡协商速率只有 100Mbps。
用 ethtool eth0 可以查看当前协商速率,千兆网卡应显示 1000Mb/s。

常见坑和结果验证

缓存没关:sysbench 和 fio 如果不加 --direct=1,测出来的可能是内存速度而不是磁盘速度,数值会虚高。

测试文件太小:fio 的 --size 小于内存容量时,数据可能全落在缓存里。
建议测试文件至少是内存的 1.5 倍。

并发数拍脑袋:--threads 和 --numjobs 不是越大越好,超过 CPU 核心数或磁盘队列能力后,结果反而下降。
先从等于核心数开始调。

只看单次结果:磁盘和网络受邻居影响大,建议同一命令连跑三次,记录中位数,而不是取第一次或最好的一次。

验证是否跑成功,可以看命令退出码,echo $? 返回 0 表示正常结束。
如果中途报错,优先检查磁盘空间、权限和内核参数,例如 ulimit -n 是否限制了并发文件数。

几个实际会被问到的问题

测试结果和厂商宣传差距很大正常吗? 厂商数据多在理想环境下测得,实际受虚拟化、磁盘阵列、网络拓扑影响,有差距是正常的。
重点看同一台机器多次测试是否稳定,而不是和宣传值较劲。

云服务器能做磁盘写测试吗? 可以,但要注意云盘有 IOPS 上限,测出来的是被限制后的值。
部分云厂商对持续高负载有额外限制,测试前最好确认计费规则。

为什么内存测试比 CPU 测试更波动? 内存性能受 NUMA 架构和虚拟机内存超分影响明显。
物理机结果通常更稳定,虚拟机环境建议多测几轮再下结论。

跑完这四类测试,你手里就有了一组可以横向对比的数字。
下次换机器或调整配置时,用同样的命令再跑一遍,就能判断改动是否真的带来了提升。
如果只想快速摸底,优先跑 CPU 和磁盘随机读这两项,它们对大多数业务的体验影响最直接。

分享到:
上一篇
服务器集群脑裂处理:从现象判断到恢复的完整操作流程
下一篇
ITIL运维流程配置:从工单到闭环的实操指南
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意