服务器性能压测是用基准测试工具量化CPU、内存、磁盘、网络四项核心能力的真实水平,为云服务器选型、物理机架设和扩容决策提供数据依据。压测结果直接决定预算投向,上线前跑一轮压测还能提前暴露硬件短板。本文按四个维度给出可复现的压测命令和结果解读方法。
服务器压测前的环境准备与基线确认
压测开始前先确认四件事:系统版本与内核参数、CPU型号和核心数、磁盘类型与挂载方式、网络拓扑与带宽限制。压测机器上临时关闭无关的cron任务、监控Agent和日志采集,防止后台负载污染数据。每项测试至少跑三次取中间值,并在相同功耗策略下进行(固定CPU频率,避免睿频波动)。
CPU性能压测:sysbench与压力模式
sysbench对CPU做素数计算压力,命令简单、结果稳定,适合横向对比同一配置在不同实例规格上的表现:
# 16线程压测60秒
sysbench cpu --threads=16 --cpu-max-prime=20000 --time=60 run
# 输出中关注 events per second 与 avg latency
# events per second 越高,单核吞吐越强;avg latency 越低,延迟越优
对比不同实例时保持–threads、–cpu-max-prime、–time一致,否则数据不可比。若需要模拟浮点运算,可改用stress-ng或SPEC benchmark;sysbench更看重CPU整数吞吐量。
内存带宽与延迟压测:sysbench memory
内存测试重点看带宽和延迟。sysbench memory默认用顺序写模式,可以切换块大小与操作类型:
# 顺序写测试,块大小1MB,总数据量100GB
sysbench memory --memory-block-size=1M --memory-total-size=100G --memory-oper=write run
# 随机读测试
sysbench memory --memory-block-size=4K --memory-total-size=100G --memory-oper=read run
块大小越大越接近吞吐上限,块越小越接近延迟路径;对比两组数据可以判断内存带宽是否成为瓶颈。大数据量设置避免命中cache。
磁盘IO性能压测:fio与读写模型
磁盘压测用fio,按业务形态选择读写模型。关键参数是ioengine、rw模式、块大小、iodepth:
# 4K随机读,模拟数据库小IO
fio --name=randread --ioengine=libaio --direct=1 --rw=randread --bs=4k --size=8G --numjobs=16 --iodepth=32 --runtime=60 --group_reporting
# 顺序写,模拟日志写入
fio --name=seqwrite --ioengine=libaio --direct=1 --rw=write --bs=1M --size=16G --numjobs=4 --iodepth=16 --runtime=60 --group_reporting
读结果的IOPS、BW(带宽)与latency(p99):SSD随机读IOPS明显高于HDD;顺序写的带宽说明缓存与队列深度是否匹配。direct=1绕过缓存,看到的是磁盘物理能力。
网络带宽压测:iperf3
网络压测用iperf3,服务端与客户端分别启动,压测带宽与重传率。测出的网络带宽加10%~20%余量,得出真实可用带宽:
# 服务端
iperf3 -s
# 客户端:10个并行连接测30秒
iperf3 -c 10.0.0.5 -P 10 -t 30
观察Retr列的重传计数。重传偏高说明网络链路有丢包,先排查网卡、交换机与MTU,再调整业务并发。
压测结果解读与服务器选型建议
压测报告用于选型时关注三个比例:核心数翻倍后吞吐是否近似线性增长;内存带宽是否与CPU吞吐匹配;磁盘4k随机IOPS是否满足应用峰值。云服务器选型建议:数据库类应用优先选高IOPS实例;计算密集任务选高主频实例;把压测数据与供应商规格书对照,差异超过20%时再复核配置参数。
压测的常见误区与注意事项
常见误区有三个:一是在生产机器上直接压测,扰动线上流量;二是忽略内核参数,比如磁盘调度器影响fio结果;三是一次压测就下结论,样本不足。压测结束后关闭压测服务,清理生成的测试文件,把脚本参数记录下来,作为后续扩容复测的基线。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-xing-neng-ya-ce-zhi-nan-cpu-nei-cun-ci-pan-wang/