服务器性能测试与压测:sysbench、ab、wrk
用 sysbench 摸清 CPU/内存/磁盘底子,用 ab 和 wrk 压出 HTTP 服务的 QPS 与延迟。
上线前你需要知道服务器能扛多少。本文介绍三个常用工具:sysbench 测硬件基准,ab 和 wrk 压测 HTTP 服务。
安装工具
以 Ubuntu/Debian 为例:
sudo apt update
sudo apt install -y sysbench apache2-utils wrk
其中 apache2-utils 提供 ab(Apache Bench)。
sysbench:测 CPU、内存、磁盘
CPU 测试(计算素数,越快说明单核越强):
sysbench cpu --cpu-max-prime=20000 --threads=4 run
看 events per second(每秒事件数)越高越好,total time 越短越好。
内存吞吐:
sysbench memory --memory-block-size=1M --memory-total-size=10G run
关注 transferred 里的 MiB/sec。磁盘 I/O 需要先准备再运行、最后清理:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw run
sysbench fileio --file-total-size=2G cleanup
重点看 read/write 的 MiB/s 和 95th percentile 延迟。
ab 与 wrk:压测 HTTP
ab 简单直接,-n 是总请求数,-c 是并发数:
ab -n 10000 -c 100 http://your-server/api/health
wrk 更适合高并发,-t 线程、-c 连接、-d 持续时间:
wrk -t4 -c100 -d30s http://your-server/api/health
看懂结果指标
- QPS / Requests per second:每秒处理的请求数,越高越好。
- Latency / 延迟:单次响应耗时。重点看 p95、p99(尾延迟),而不只是平均值——平均值会掩盖卡顿。
- 失败请求 / Non-2xx:出现非 200 说明已过载或有错误,此时的 QPS 不可信。
压测注意事项
- 别打生产:先在测试环境或副本上压,避免影响真实用户。
- 逐步加压:并发从小到大(如 10 → 50 → 100),观察 QPS 何时不再增长、延迟何时飙升,那就是拐点。
- 结合监控看瓶颈:压测时同时用 top、htop、vmstat 1、iostat -x 1 观察 CPU、内存、磁盘、网络,判断到底卡在哪一层。
- 从别的机器发压:压测客户端和被测服务同机会互相抢资源,数据失真。
小结
sysbench 帮你摸清硬件底子,ab 和 wrk 帮你压出服务的真实吞吐与延迟。关键是逐步加压、盯住 p95/p99、结合系统监控定位瓶颈,并且永远先在测试环境验证,再上生产。