以下是对 Ubuntu 中 ab 命令(ApacheBench) 的详细介绍,涵盖安装、使用方法和应用场景:
一、ab 是什么?
- 全称:ApacheBench,Apache HTTP 服务器自带的性能测试工具。
- 用途:模拟并发请求,测试 Web 服务器或 API 接口的负载能力。
- 特点:
- 轻量级,无需复杂配置。
- 支持 HTTP/HTTPS 协议。
- 生成详细的性能报告(QPS、延迟、吞吐量等)。
二、安装 ab
在 Ubuntu/Debian 系统中:
sudo apt update && sudo apt install apache2-utils -y
- 包含
ab的包名:apache2-utils
三、基础命令格式
ab [选项] <目标URL>
四、常用参数详解
核心参数:
| 参数 | 说明 |
|---|---|
-n <次数> |
总请求次数(必填) |
-c <并发数> |
并发用户数(默认 1) |
-k |
启用 HTTP Keep-Alive 长连接(减少 TCP 握手开销) |
-t <秒> |
最大测试时长(与 -n 二选一) |
-H <头部> |
添加自定义请求头(如 "User-Agent: TestBot") |
-p <文件> |
POST 请求时提交的数据文件(需配合 -T 设置 Content-Type) |
-T <类型> |
设置 Content-Type(如 application/json) |
-v <级别> |
输出详细日志(1-4,级别越高信息越详细) |
高级参数:
| 参数 | 说明 |
|---|---|
-s <秒> |
单次请求超时时间(默认 30 秒) |
-C <Cookie> |
附加 Cookie 信息(如 "name=value; path=/") |
-A <用户:密码> |
基本认证(Basic Authentication) |
-X <代理> |
通过代理服务器发送请求(如 127.0.0.1:8080) |
五、使用示例
1. 基础测试(100 次请求,10 并发):
ab -n 100 -c 10 "https://www.bigran.cn/api/data"
2. 带 POST 请求的 JSON 提交:
# 创建 data.json 文件
echo '{"key": "value"}' > data.json
# 发送 POST 请求
ab -n 50 -c 5 -p data.json -T "application/json" "https://www.bigran.cn/submit"
3. 自定义请求头和长连接:
ab -n 200 -c 20 -k -H "Authorization: Bearer token123" "https://www.bigran.cn/auth"
六、结果解读
关键指标:
Server Software: nginx/1.18.0
Server Hostname: www.bigran.cn
Server Port: 443
Document Path: /api/data
Document Length: 1024 bytes
Concurrency Level: 10
Time taken for tests: 2.345 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 123400 bytes
HTML transferred: 102400 bytes
Requests per second: 42.63 [#/sec] (mean)
Time per request: 234.500 [ms] (mean)
Time per request: 23.450 [ms] (mean, across all concurrent requests)
Transfer rate: 51.34 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms):
50% 220
66% 230
75% 240
80% 250
90% 260
95% 270
98% 280
99% 290
100% 300 (longest request)
- Requests per second (QPS):服务器每秒处理的请求数,越高越好。
- Time per request:单个请求的平均耗时。
- Percentage served:响应时间分布(如 90% 的请求在 260ms 内完成)。
七、应用场景
- Web 服务器压力测试:评估服务器在高并发下的稳定性。
- API 性能对比:优化前后性能数据对比(如缓存生效后 QPS 提升)。
- 配置调优验证:调整 Nginx/Apache 参数后验证效果。
- 故障复现:模拟突发流量排查服务崩溃原因。
八、注意事项
-
合法合规:
- 仅测试你有权访问的服务器。
- 避免触发 DDoS 防护机制(如 Cloudflare 的速率限制)。
-
性能瓶颈识别:
- 若客户端 CPU 占用过高,可能成为瓶颈(需换用更高性能机器测试)。
- 结合服务端监控工具(如
htop,nmon)分析资源使用。
-
替代工具:
wrk:支持 Lua 脚本的多线程压测工具。siege:支持随机 URL 和认证的测试工具。jmeter:图形化界面,适合复杂场景。
九、最佳实践
- 渐进式测试:从低并发开始,逐步增加(如
-c 10 → 100 → 1000)。 - 结果记录:保存输出到文件(
ab -n 100 ... >> report.txt)。 - 对比测试:多次运行取平均值,减少误差。