温馨提示×

CentOS环境如何进行性能测试

小樊
42
2025-12-19 17:39:53
栏目: 智能运维

CentOS 性能测试实操指南

一 测试准备与监控

  • 安装常用工具:建议准备 sysstat(含 sar/iostat)、stress-ngfioiperf3。示例:yum install -y sysstat stress-ng fio iperf3(部分环境可能需要 EPEL 源)。
  • 基线监控命令:
    • 整体负载:uptimetop
    • 资源与 I/O:vmstat 1iostat -x 1sar -u 1 10sar -d 1 10
  • 监控要点:关注 load average 与 CPU 核数关系、%iowait%util、网络 rxkB/s/txkB/s 等,以判断瓶颈所在。
  • 测试原则:保持环境一致、先预热避免缓存干扰、按实际业务选择指标与并发、每次只变更一个变量便于归因。

二 CPU 与内存压力测试

  • CPU(stress-ng):
    • 满载:stress-ng --cpu $(nproc) --timeout 300s
    • 指定核心:stress-ng --cpu 4 --timeout 300s
    • 固定负载百分比(版本需 ≥ 0.09.54):stress-ng --cpu $(nproc) --cpu-load 50
    • 不同运算方法:stress-ng --cpu $(nproc) --cpu-method fft
  • 内存(stress-ng):
    • 占用约 80% 物理内存:TOTAL_MEM=$(free -m | awk '/^Mem:/{print int($2 * 0.8)}')stress-ng --vm 1 --vm-bytes ${TOTAL_MEM}M --timeout 300s
    • 方法示例:--vm-method memset/stream/malloc;可加 --verify 检测内存错误。

三 磁盘 I/O 基准测试

  • 安全准备:优先在 非生产 环境进行;若直接对块设备(如 /dev/sdX)测试将破坏数据,务必提前备份与确认。
  • FIO 常用场景(示例):
    • 随机读 IOPS(绕过缓存):fio --ioengine=libaio --bs=4k --direct=1 --rw=randread --filename=/mnt/test/fiofile --size=1G --runtime=60 --numjobs=1 --iodepth=1 --name=randread
    • 顺序写带宽:fio --ioengine=libaio --bs=1M --direct=1 --rw=write --filename=/mnt/test/fiofile --size=1G --runtime=60 --numjobs=1 --iodepth=1 --name=seqwrite
    • 顺序读带宽:fio --ioengine=libaio --bs=1M --direct=1 --rw=read --filename=/mnt/test/fiofile --size=1G --runtime=60 --numjobs=1 --iodepth=1 --name=seqread
    • 关键参数:--direct=1(绕过 page cache)、--bs(块大小)、--iodepth(队列深度)、--numjobs(并发)、--runtime(持续时间)。
  • 快速校验与对比:
    • 简单顺序写:dd if=/dev/zero of=/tmp/testfile bs=64k count=4k oflag=dsync
    • 磁盘信息/缓存测速:hdparm -I /dev/sdahdparm -Tt /dev/sda
  • 观测指标:结合 iostat -xsar -d 关注 await、svctm、avgqu-sz、%util 等,判断延迟与设备饱和情况。

四 网络带宽与延迟测试

  • iperf3 吞吐(Server/Client 配对):
    • 服务端:iperf3 -s
    • 客户端:iperf3 -c 192.0.2.10(可加 -P 4 并发流、-t 30 时长、-u 测 UDP)
  • 结果解读:关注 带宽(Gbps/Mbps)抖动丢包率(UDP),以及 TCP 重传等指标,定位链路与网卡瓶颈。

五 结果判读与优化建议

  • CPU:若 load average 持续高于 CPU 核数,或 %iowait 高企,说明计算或 I/O 存在瓶颈;结合 vmstatr/b 队列与 sar -u%idle 判定是否需扩容或优化热点路径。
  • 内存:出现 si/so(swap 换入/换出)长期不为 0,或 sar -r%commit > 100%,说明内存紧张;考虑增加内存或优化内存占用。
  • 磁盘:iostat -x%util ≈ 100% 表示设备饱和;await 远高于 svctm 表示队列等待长;结合 sar -davgqu-sz 与业务访问模式(随机/顺序、块大小)选择更合适的存储与调度策略。
  • 网络:iperf3 带宽达不到预期时,排查网卡双工/速率、MTU、交换机端口、并发流与协议(TCP/UDP)差异。

0