Get the FREE Ultimate OpenClaw Setup Guide →
npx machina-cli add skill chaterm/terminal-skills/benchmarking --openclaw
Files (1)
SKILL.md
4.1 KB

性能基准测试

概述

压力测试、基准测试工具使用技能。

sysbench

安装

# Debian/Ubuntu
apt install sysbench

# CentOS/RHEL
yum install sysbench

CPU 测试

# 单线程
sysbench cpu run

# 多线程
sysbench cpu --threads=4 run

# 指定时间
sysbench cpu --threads=4 --time=60 run

内存测试

# 顺序读写
sysbench memory run

# 随机读写
sysbench memory --memory-access-mode=rnd run

# 指定大小
sysbench memory --memory-block-size=1M --memory-total-size=10G run

磁盘 IO 测试

# 准备测试文件
sysbench fileio --file-total-size=10G prepare

# 随机读写
sysbench fileio --file-total-size=10G --file-test-mode=rndrw run

# 顺序读
sysbench fileio --file-total-size=10G --file-test-mode=seqrd run

# 清理
sysbench fileio --file-total-size=10G cleanup

MySQL 测试

# 准备数据
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test --tables=10 --table-size=100000 prepare

# 运行测试
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test --tables=10 --table-size=100000 \
    --threads=16 --time=60 run

# 清理
sysbench oltp_read_write --mysql-host=localhost --mysql-user=root \
    --mysql-password=pass --mysql-db=test cleanup

fio 磁盘测试

基础测试

# 顺序读
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=60

# 顺序写
fio --name=seqwrite --rw=write --bs=1M --size=1G --numjobs=1 --runtime=60

# 随机读
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60

# 随机写
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --runtime=60

# 混合读写
fio --name=randrw --rw=randrw --bs=4k --size=1G --numjobs=4 --rwmixread=70 --runtime=60

配置文件

# test.fio
[global]
ioengine=libaio
direct=1
runtime=60
time_based

[seqread]
rw=read
bs=1M
size=1G

[randread]
rw=randread
bs=4k
size=1G
numjobs=4
fio test.fio

HTTP 压测

ab (Apache Bench)

# 基础测试
ab -n 1000 -c 100 http://localhost/

# 带 Keep-Alive
ab -n 1000 -c 100 -k http://localhost/

# POST 请求
ab -n 1000 -c 100 -p data.json -T application/json http://localhost/api

wrk

# 基础测试
wrk -t4 -c100 -d30s http://localhost/

# 带脚本
wrk -t4 -c100 -d30s -s post.lua http://localhost/api

hey

# 基础测试
hey -n 1000 -c 100 http://localhost/

# 指定时间
hey -z 30s -c 100 http://localhost/

# POST 请求
hey -n 1000 -c 100 -m POST -d '{"key":"value"}' http://localhost/api

网络测试

iperf3

# 服务端
iperf3 -s

# 客户端
iperf3 -c server_ip

# UDP 测试
iperf3 -c server_ip -u -b 1G

# 双向测试
iperf3 -c server_ip -d

# 多线程
iperf3 -c server_ip -P 4

netperf

# 服务端
netserver

# TCP 吞吐
netperf -H server_ip

# TCP 延迟
netperf -H server_ip -t TCP_RR

常见场景

场景 1:服务器基准测试

#!/bin/bash
echo "=== CPU 测试 ==="
sysbench cpu --threads=$(nproc) --time=30 run

echo "=== 内存测试 ==="
sysbench memory --threads=$(nproc) --time=30 run

echo "=== 磁盘测试 ==="
fio --name=test --rw=randrw --bs=4k --size=1G --runtime=30 --time_based

场景 2:数据库基准

#!/bin/bash
# MySQL OLTP 测试
sysbench oltp_read_write \
    --mysql-host=localhost \
    --mysql-user=root \
    --mysql-password=pass \
    --mysql-db=sbtest \
    --tables=10 \
    --table-size=100000 \
    --threads=16 \
    --time=300 \
    --report-interval=10 \
    run

结果解读

指标说明
TPS每秒事务数
QPS每秒查询数
IOPS每秒 IO 操作数
延迟响应时间
吞吐量数据传输速率

故障排查

# 检查系统负载
uptime
vmstat 1

# 检查 IO
iostat -x 1

# 检查网络
sar -n DEV 1

Source

git clone https://github.com/chaterm/terminal-skills/blob/main/performance/benchmarking/SKILL.mdView on GitHub

Overview

Benchmarking Skill 提供一个覆盖硬件到应用层的综合性能基线能力。你可以在新硬件上线、迁移、或调优后,基于可重复的测试用例,获得对比性强的基线数据,帮助定位瓶颈并进行容量规划。该技能涵盖 CPU、内存、磁盘、数据库 OLTP、HTTP 压测以及网络吞吐与延迟评估,工具集包括 sysbench、fio、ab、wrk、hey、iperf3、netperf 等。

How This Skill Works

你会为目标组件选择合适的测试工具,设定参数化的测试用例并执行多轮测试以获得可对比的指标。测试输出通常包括 TPS/QPS/IOPS、延迟、吞吐量等关键指标,便于你进行横向对比、基线建立和容量评估。通过对 CPU、内存、磁盘、数据库、HTTP 与网络等维度的组合测试,你可以系统性地诊断性能瓶颈并量化改动效果。

When to Use It

  • 在新硬件或云实例上线前进行基线测试,以获得初始性能基线
  • 对现有服务的调优(数据库参数、存储配置、网络链路等)进行对照测试
  • 进行容量规划,评估峰值负载下的性能边界(并发、I/O、网络带宽)
  • 诊断性能瓶颈:分解 CPU/内存/磁盘 I/O/网络子测试以定位瓶颈
  • 在不同环境(开发/预生产/生产)之间对比性能的一致性与可重复性

Quick Start

  1. 步骤 1:安装并准备测试工具,如 Sysbench、fio,以及 HTTP/网络测试工具(ab、wrk、hey、iperf3、netperf)。
  2. 步骤 2:执行基础基线测试:CPU、内存与磁盘 I/O,例如使用 sysbench cpu run、sysbench memory run,以及 fio 的基础测试(或可选的 sysbench fileio)。
  3. 步骤 3:如涉及数据库,执行 oltp_read_write 的 prepare、run 与 cleanup,按业务数据量设定表数与表大小。
  4. 步骤 4:执行网络与 HTTP 压测,收集 TPS/QPS/IOPS、延迟与吞吐量等指标,并记录测试环境与参数以便对比。

Best Practices

  • 始终在受控、可重复的环境中进行测试,记录硬件、内核参数与软件版本信息
  • 对同一测试多轮执行并取平均,必要时给出 50/95/99 百分位延迟等统计
  • 使用一致的参数集(并发、时长、数据规模),以便跨环境横向对比
  • 在测试数据库时,确保数据规模、表数、数据分布与工作负载与生产场景一致
  • 对结果进行可视化与基线对比,明确改动前后的增减幅度

Example Use Cases

  • 场景 1:服务器基线测试 #!/bin/bash echo "=== CPU 测试 ===" sysbench cpu --threads=$(nproc) --time=30 run echo "=== 内存测试 ===" sysbench memory --threads=$(nproc) --time=30 run echo "=== 磁盘测试 ===" fio --name=test --rw=randrw --bs=4k --size=1G --runtime=60 --time_based

Frequently Asked Questions

Add this skill to your agents

Related Skills

Sponsor this space

Reach thousands of developers