压测入门:ab 与 wrk 的使用与指标解读
该文章由AI生成,仅为SEO优化测试,相关内容不保证准确!!!
引言
“我的服务器能扛多少人?”这个问题只有压测能回答。压测是用可控的模拟流量测出系统的真实容量,是容量规划与上线前验证的基本功。两个最常用的工具:ab(Apache Benchmark,简单易用)与 wrk(高性能、可脚本化)。
一、ab 的使用
基本用法:ab -n 1000 -c 100 https://y.anxiny.cn/(-n 总请求数,-c 并发数)。输出重点看:Requests per second(QPS,核心吞吐指标);Time per request(并发级平均响应);Failed requests(必须为 0,失败说明有瓶颈或错误);Percentage of requests served within(分位数响应时间,95%/99% 线比平均值更能反映体验)。注意:ab 单进程多线程能力有限,万级并发时会成为瓶颈,此时换 wrk。
二、wrk 的使用
基本用法:wrk -t4 -c200 -d30s https://y.anxiny.cn/(-t 线程数,-c 并发连接数,-d 持续时间)。wrk 用 epoll 高性能压测,单机可打数十万并发。输出:Latency 分布(50%、75%、90%、99% 分位)、Requests/sec、Socket errors(connect/read/write 错误)。Lua 脚本可模拟 POST、携带参数:wrk.method = "POST"; wrk.body = "a=1";。压测动态接口时用 Lua 构造真实请求体,压出的数据才有意义。
三、核心指标解读
QPS:系统每秒处理请求数,容量规划的基本单位。响应时间分位数:平均响应时间会掩盖长尾,99% 线(P99)才是用户体验的下限——P99 超过 1 秒,意味着 1% 的用户体验很差,且并发越高这比例的用户绝对数越大。错误率:压测中任何非 2xx/3xx 响应都要追查(超时、5xx、连接拒绝)。资源水位:压测同时盯服务器 CPU/内存/IO/带宽——找到“QPS 不再上升而某资源到顶”的点,那就是当前瓶颈;瓶颈在 CPU 就考虑升配或优化代码,在带宽就上 CDN,在数据库就做读写分离。
四、注意事项与常见误区
① 压测环境与生产要相似:配置差异会让结论失真,至少同规格;② 压测机不能是瓶颈:单台压测机打满时数据无效,用多台分布式压测;③ 预热:缓存、连接池、JIT 都需要预热,跳过前几秒数据;④ 不要对生产库暴力压测:压写接口会写入大量脏数据,压测前隔离环境或准备数据清理方案;⑤ 只压一个接口容易低估互相影响——混合场景(80% 读+20% 写)更接近真实;⑥ 压测报告要记录环境:配置、数据量、时间,否则数据无法复现与对比。
总结
压测回答两个问题:系统能扛多少(QPS)、用户体验下限在哪(P99)。用 ab 起步、wrk 进阶,盯住分位数响应时间与资源瓶颈点,压测结果才能指导容量规划与优化方向。上线前的压测 + 日常监控基线,是容量管理的左右手。