关于 benchmarking
面向系统与服务测试者的性能基准测试技能,汇集 CPU、内存、磁盘、数据库、HTTP 和网络测试命令,并说明常见指标与排查方法。
主要功能
- 01CPU、内存与磁盘基准测试
- 02MySQL OLTP 测试
- 03HTTP 并发压测
- 04网络吞吐与延迟测试
- 05结果指标与故障检查
适用场景
- 01比较服务器 CPU 和内存表现
- 02检查磁盘读写性能
- 03评估 HTTP 服务并发能力
- 04测试网络吞吐或延迟
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ chaterm/ terminal-skills --skill benchmarking安装后在 Claude Code 中输入/benchmarking确认已加载。
详细介绍
来自项目 README性能基准测试
概述
压力测试、基准测试工具使用技能。
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
评论
支持 Markdown