温馨提示×

如何在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队列、网络带宽)。
  • 安全提示:对块设备生产环境执行写测试前务必做好数据备份变更窗口评估。

0