首页/开发/软件测试速查/ab(ApacheBench)快速压测

ab(ApacheBench)快速压测

ab 以 -n 总请求数、-c 并发数快速压测:输出吞吐、平均延迟与分位分布,并给出失败统计;适合快速冒烟与版本间对比,不适合复杂会话与长时压测。

软件测试速查开发更新于 2026-10-13

ab 快速压测是什么

ab(ApacheBench)是 Apache 自带的轻量压测工具:-n 指定总请求数、-c 指定并发数,运行后输出吞吐、平均延迟与分位分布,并统计失败请求。适合对单个接口做快速冒烟与版本间对比;不支持复杂会话与脚本化行为,也不适合长时压测。

基本信息

常用参数-n 总请求数、-c 并发数、-k 长连接、-H 自定义头
请求方法默认 GET,POST 用 -p 文件与 -T 类型
输出内容吞吐、平均延迟、分位分布、失败统计
复现要求并发、请求数与目标 URL 记录在报告中,便于复跑对比
环境标注结果附压测机规格与网络位置
适用边界快速冒烟与相对对比;不适合复杂会话与长时压测

最小示例

最小示例
ab -n 5000 -c 50 -k https://example.com/api/ping
# -n:总请求数;-c:并发连接数
# -k:保持长连接(默认每请求新建连接)
# 复跑对比:并发数与请求数保持一致
# 压测时观察压测机 CPU,确认不是工具侧瓶颈

典型使用场景

  • 快速冒烟:发布后对关键 URL 做小规模压力检查。
  • 版本对比:相同参数下前后版本对比吞吐与分位。
  • 参数粗调:比较不同并发下的延迟变化,找经验拐点。
  • 静态资源验证:测静态文件服务的吞吐能力。
  • 配置验证:验证连接复用(-k)对吞吐与延迟的影响。
  • 回归巡检:把固定参数的小压测纳入日常巡检。

输出字段读法

字段含义读法
Complete requests完成请求数与 -n 对比,看是否被中断
Failed requests失败请求数含连接失败与校验失败,需细分原因
Non-2xx responses非 2xx 状态数业务错误,与 Failed 含义不同
Requests per second吞吐(每秒请求数)结合并发数一起看
Time per request平均延迟(两个口径)并发口径约等于串行口径乘以并发
50%/90% 等分位延迟分布长尾看 95%/99% 档
报告中 Failed requests 与 Non-2xx responses 含义不同,需要分列解读:前者偏传输层,后者偏业务层。
默认不保持长连接(需要 -k),测不到连接复用场景:是否需要 -k 取决于要验证的目标。
ab 是单进程工具:并发拉高时先确认压测机自身没有饱和。

易错点

  • 默认不保持长连接(需要 -k),测不到连接复用场景:按验证目标选择是否加 -k。
  • 用单机 ab 结果直接下容量结论,忽略环境差异:结果注明压测机与网络位置。
  • POST 请求漏带 -T 类型导致服务端解析失败:把 Content-Type 写对。
  • 长时间反复压生产:ab 没有细粒度节奏控制,长时压测改用 k6 或 Gatling 一类工具。

数据来源与参考

  • Apache HTTP Server 文档:ab(httpd.apache.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌