benchmarking
Scannednpx machina-cli add skill chaterm/terminal-skills/benchmarking --openclaw性能基准测试
概述
压力测试、基准测试工具使用技能。
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:安装并准备测试工具,如 Sysbench、fio,以及 HTTP/网络测试工具(ab、wrk、hey、iperf3、netperf)。
- 步骤 2:执行基础基线测试:CPU、内存与磁盘 I/O,例如使用 sysbench cpu run、sysbench memory run,以及 fio 的基础测试(或可选的 sysbench fileio)。
- 步骤 3:如涉及数据库,执行 oltp_read_write 的 prepare、run 与 cleanup,按业务数据量设定表数与表大小。
- 步骤 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
Related Skills
troubleshooting
chaterm/terminal-skills
性能问题排查
sql-optimization
chaterm/terminal-skills
SQL 优化与调优
profiling
chaterm/terminal-skills
--- name: profiling description: 性能分析 version: 1.0.0 author: terminal-skills tags: [performance, profiling, perf, flamegraph, strace, cpu] --- # 性能分析 ## 概述 CPU/内存分析、火焰图、追踪技能。 ## perf 工具 ### 基础命令 ```bash # 安装 apt install linux-tools-common linux-tools-$(uname -r) # CPU 采样 perf record -g -p PID p
tuning
chaterm/terminal-skills
--- name: tuning description: 系统调优 version: 1.0.0 author: terminal-skills tags: [performance, tuning, sysctl, kernel, optimization] --- # 系统调优 ## 概述 内核参数、文件系统、网络优化技能。 ## 内核参数调优 ### 内存管理 ```bash # /etc/sysctl.d/99-memory.conf # 减少交换倾向 vm.swappiness = 10 # 脏页刷新 vm.dirty_ratio = 20 vm.dirty_backg
Database Design Expert
martinholovsky/claude-skills-generator
Expert in database schema design with focus on normalization, indexing strategies, FTS optimization, and performance-oriented architecture for desktop applications
python-performance
athola/claude-night-market
'Consult this skill for Python performance profiling and optimization.