温馨提示×

centos进程性能测试工具

小樊
41
2025-11-16 01:49:57
栏目: 智能运维

CentOS 进程性能测试工具与用法

一 工具分类与定位

  • 进程级 CPU/内存/IO/上下文切换:
    • pidstat(来自 sysstat):按进程查看 %CPU、%MEM、RSS、VSZ、cswch/s、iowait 等,适合定位单个进程或线程的资源消耗与调度行为。
    • top/htop:实时查看进程资源占用,支持按 CPU/内存 排序,快速筛查异常进程。
    • ps:快照式查看进程信息,便于脚本化筛选与批量统计。
  • 系统级负载与瓶颈定位:
    • uptime:观察 1/5/15 分钟平均负载 的变化趋势。
    • mpstat:多核 CPU 利用率与 %iowait、%idle 等,判断是 CPU 计算瓶颈还是 IO 等待。
    • vmstat:整体 CPU/内存/IO/进程 活动,快速识别系统级瓶颈。
    • iostat/iotop:磁盘 IOPS/带宽/await 与进程级磁盘 IO 排行。
    • sar:历史性能数据收集与回放,便于对比分析。
  • 压力与基准测试(用于“制造”负载以验证监控与调优):
    • stress/stress-ng:快速产生 CPU/内存/IO 负载,便于复现高负载场景。
    • sysbench:通用基准测试(CPU、内存、文件 IO、数据库等)。
    • fio:专业 磁盘 IO 基准测试(随机/顺序、队列深度、并发等)。
    • iperf3:网络吞吐与抖动测试(TCP/UDP)。

二 快速上手流程

  • 步骤 1 安装常用工具
    • 基础监控与压力:
      • yum 安装:yum -y install sysstat stress(sysstat 提供 mpstat/pidstat/sar;stress 用于产生负载)。
      • 如需更丰富的 IO 场景,建议安装 stress-ngyum -y install stress-ng
  • 步骤 2 制造负载
    • CPU 密集型单进程:stress --cpu 1 --timeout 600(持续 600 秒 占用 1 个 CPU)。
    • 内存占用:stress --vm 2 --vm-bytes 2G --vm-keep(保持 2 个进程 各占用 2GB 内存,避免频繁分配释放)。
  • 步骤 3 观察与定位
    • 全局负载:watch -d uptime(观察 load average 上升情况)。
    • 多核 CPU:mpstat -P ALL 1(查看每个 CPU 的 %usr、%sys、%iowait、%idle)。
    • 进程级:pidstat -u -p 1(按 1 秒 刷新显示目标进程的 %CPU 等);如需查看 %wait 字段,建议使用 sysstat ≥ 11.5.5(老版本如 CentOS 7 自带版本可能无该字段)。
    • 磁盘 IO:iostat -x 1iotop(定位 await、svctm、r/s、w/s 与进程级 IO)。

三 常用命令速查表

目标 工具与命令示例 关键指标/用途
进程 CPU 占用 pidstat -u -p 1 进程 %CPU,定位计算密集
进程内存占用 pidstat -r -p 1 RSS/VSZ、内存泄漏排查
进程上下文切换 pidstat -w -p 1 cswch/s(自愿/非自愿切换)
全局负载趋势 watch -d uptime 1/5/15 分钟 load average
多核 CPU 利用率 mpstat -P ALL 1 %usr、%sys、%iowait、%idle
系统整体资源 vmstat 1 r/b/si/so/bi/bo、CPU/内存/IO 概览
磁盘 IO 性能 iostat -x 1 await、svctm、r/s、w/s、util
进程磁盘 IO iotop 进程级 读/写速率 排行
历史性能数据 sar -u 1 10;sar -r 1 10 CPU/内存 历史曲线回放
制造 CPU 负载 stress --cpu N --timeout T 快速打满 N 个 CPU
制造内存负载 stress --vm N --vm-bytes X --vm-keep 持续占用 N×X 内存
制造 IO 负载 stress-ng -i 1 --hdd 1 --timeout 600 通过临时文件产生 磁盘 IO
通用基准测试 sysbench cpu --cpu-max-primes=100000 --threads=4 run CPU 计算基准
磁盘基准测试 fio --ioengine=libaio --bs=4k --direct=1 --rw=randread --size=1G --runtime=60 --name=randread IOPS/延迟 测试

四 判定与优化参考

  • 常见性能健康阈值(经验值,需结合业务特性验证):
    • CPUuser% + sys% < 70%;若接近或超过,多为计算瓶颈或系统调用开销大。
    • 内存si/so ≈ 0(避免 swap 抖动);频繁换入换出需扩容或优化内存使用。
    • 磁盘%iowait < 20%;过高表示 IO 等待显著,需优化存储或降低 IO 并发。
    • 网络:吞吐接近网卡上限通常视为正常上限。
  • 快速排查路径(由粗到细):
    • uptime/mpstat 判断是 CPU 计算 还是 IO 等待 主导。
    • pidstat 精准定位到异常 进程/PID,结合 %CPU、%MEM、cswch/s 判断计算密集还是频繁调度/锁竞争。
    • 若为 IO 问题,用 iostat/iotopawait、svctm、r/s、w/s 与进程 IO 排行,进一步用 fio 做可重复的场景化压测与调优。

0