如何在CentOS中进行性能测试
小樊
44
2025-12-27 12:07:37
CentOS性能测试实操指南
一 测试准备与监控
- 资源与场景覆盖:围绕CPU、内存、磁盘I/O、网络四大维度设计用例,尽量贴近真实业务负载(如数据库更关注IOPS与延迟,Web更关注并发与带宽)。
- 环境一致性:测试前关闭不必要的服务与计划任务,避免偶发干扰;同一套用例建议重复≥3次取平均。
- 监控与取证:使用sar、vmstat、iostat、dstat、atop等采集资源使用与瓶颈线索;必要时结合netdata进行实时可视化。
- 预热与清理:磁盘测试前做预热(避免仅测缓存),结束后清理测试文件,避免影响后续测试。
- 非生产执行:压力测试避免影响线上业务,优先在隔离环境或维护窗口进行。
二 CPU与内存测试
- CPU
- UnixBench:综合基准,评估单核与多核能力。
示例:wget https://github.com/kdlucas/byte-unixbench/archive/v5.1.3.tar.gz && tar -zxvf v5.1.3.tar.gz && cd byte-unixbench-5.1.3/UnixBench && make && ./Run -c 1(单核),./Run -c $(nproc)(多核)。关注输出中的System Benchmarks Index。
- sysbench:CPU计算密集型基准。
示例:sysbench cpu --threads=$(nproc) run(按CPU核心数并发)。
- stress-ng:可控压力负载与不同运算方法。
示例:stress-ng --cpu $(nproc) --timeout 300s(满载5分钟);stress-ng --cpu $(nproc) --cpu-load 50(约50%负载,需版本≥0.09.54)。
- 内存
- sysbench:带宽与访问模式。
示例:sysbench memory --threads=4 --memory-total=4G run(顺序写带宽);sysbench memory --threads=4 --memory-block-size=1K --memory-total-size=4G --memory-access-mode=rnd run(随机访问)。
- STREAM:内存带宽经典基准(建议编译运行)。
示例:yum install -y gcc gcc-gfortran;git clone https://github.com/jeffhammond/STREAM.git && cd STREAM && make;export OMP_NUM_THREADS=$(nproc);./stream_c.exe,关注Copy/Scale/Add/Triad。
- stress-ng:内存压力与方法。
示例:stress-ng --vm 2 --vm-bytes 1G --timeout 300s;stress-ng --vm 1 --vm-bytes 80% --timeout 300s(约**80%**内存压力)。
三 磁盘I/O测试
- fio(推荐):灵活模拟顺序/随机、不同块大小、并发与队列深度,可测IOPS、吞吐量、延迟。
- 随机读IOPS:
fio --ioengine=libaio --rw=randread --bs=4k --direct=1 --numjobs=4 --size=1G --runtime=60 --time_based --group_reporting --name=randread --filename=/tmp/fio_randread
- 顺序写带宽:
fio --ioengine=libaio --rw=write --bs=1M --direct=1 --numjobs=2 --size=10G --runtime=60 --time_based --group_reporting --name=seqwrite --filename=/tmp/fio_seqwrite
- 提示:将测试文件置于被测分区/磁盘;如需测裸盘,使用**/dev/sdX**并确认无重要数据(会破坏数据)。
- IOzone:文件系统级吞吐与访问模式扫描,按向导或脚本执行。
- dd(快速粗测,仅作参考):
- 顺序写:dd if=/dev/zero of=/tmp/testfile bs=64k count=4k oflag=dsync(更贴近落盘,受dsync影响速度较慢)。
四 网络测试
- iperf3:点对点带宽与抖动、丢包(TCP/UDP)。
- 服务端:iperf3 -s
- 客户端:iperf3 -c 192.0.2.10 -t 30(持续30秒);UDP可加**-u -b 1G**指定带宽。
- netperf:面向TCP_STREAM/UDP_STREAM等网络栈性能。
- 示例:netperf -H 192.0.2.10 -t TCP_STREAM。
- wrk:HTTP/HTTPS基准,评估Web服务能力。
- 示例:wrk -t12 -c400 -d30s http://192.0.2.10/(12线程、400并发、30秒)。
五 结果分析与复测建议
- 指标对照
- CPU:UnixBench的Index或sysbench的events/s;关注单核与多核差异。
- 内存:sysbench的MiB/s;STREAM的Copy/Scale/Add/Triad(单位通常为MB/s)。
- 磁盘:fio的IOPS、BW(MB/s)、lat(ms);顺序场景看带宽,随机场景看IOPS与延迟。
- 网络:iperf3的带宽(Gbps/Mbps)、抖动、丢包率;netperf的吞吐量。
- 复测与对比:保持硬件/内核/工具版本/测试文件大小与路径一致;同一用例≥3次取平均;对比变更前后或不同配置的差异,定位瓶颈(如CPU算力、I/O队列、网络带宽)。
- 安全提示:对块设备与生产环境执行写测试前务必做好数据备份与变更窗口评估。