benchmarking
@chaterm · 收录于 1 周前
性能基准测试
适合你,如果需要在发布前评估系统性能表现
/ 下载安装
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code
~/.claude/skills/(项目级 .claude/skills/)Codex CLI
~/.codex/skills/Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add chaterm/terminal-skills/benchmarking/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- chaterm/terminal-skills/benchmarking/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify chaterm/terminal-skills/benchmarking安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
48GitHub stars
~1.1K上下文体积 · 单文件
镜像托管
怎么用
技能原文 SKILL.md
性能基准测试
概述
压力测试、基准测试工具使用技能。
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
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →
评论
登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。
…