性能基准测试
概述
压力测试、基准测试工具使用技能。
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