活动上线前最怕服务器扛不住流量。压测不是玄学,关键是要选对工具、看懂指标。ab、wrk、hey、vegeta 四款工具都能测 HTTP,但适合的场景完全不同。
ab(Apache Bench)最简单,Apache 自带,一条命令就能跑。wrk 用 epoll/kqueue,能压出更高并发,但需要写 Lua 脚本做复杂请求。hey 是 Go 写的,命令行友好,适合快速验证。vegeta 更适合持续负载和结果可视化,报告最漂亮。
# 1. Apache Bench:1000 请求,100 并发
ab -n 1000 -c 100 https://example.com/
# 2. wrk:30 秒,100 连接,12 线程,压到极限
wrk -t12 -c100 -d30s https://example.com/
# 3. hey:1000 请求,50 并发,输出延迟分布
hey -n 1000 -c 50 -z 30s https://example.com/
# 4. vegeta:持续 60 秒 500 RPS,生成报告
echo "GET https://example.com/" | vegeta attack -rate=500 -duration=60s | vegeta report --type=text
# 关键指标解释
# RPS/Latency/P99:每秒请求数、平均延迟、99%分位延迟
# 错误率:非 2xx 响应占比
# 吞吐量:每秒传输字节数
选型建议:临时测一下用 ab 或 hey;要压极限并发用 wrk;要做持续负载、画趋势图用 vegeta。压测时务必监控服务器 CPU、内存、IO,否则只看客户端数据会误判。
压测不是为了让服务器崩溃。目的是找到瓶颈:是数据库连接池太小?还是 Nginx worker 不够?或者是磁盘 IO 扛不住?把瓶颈定位清楚,优化才有方向。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

