ab命令

以下是对 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 内完成)。

七、应用场景

  1. Web 服务器压力测试:评估服务器在高并发下的稳定性。
  2. API 性能对比:优化前后性能数据对比(如缓存生效后 QPS 提升)。
  3. 配置调优验证:调整 Nginx/Apache 参数后验证效果。
  4. 故障复现:模拟突发流量排查服务崩溃原因。

八、注意事项

  1. 合法合规

    • 仅测试你有权访问的服务器。
    • 避免触发 DDoS 防护机制(如 Cloudflare 的速率限制)。
  2. 性能瓶颈识别

    • 若客户端 CPU 占用过高,可能成为瓶颈(需换用更高性能机器测试)。
    • 结合服务端监控工具(如 htop, nmon)分析资源使用。
  3. 替代工具

    • wrk:支持 Lua 脚本的多线程压测工具。
    • siege:支持随机 URL 和认证的测试工具。
    • jmeter:图形化界面,适合复杂场景。

九、最佳实践

  • 渐进式测试:从低并发开始,逐步增加(如 -c 10 → 100 → 1000)。
  • 结果记录:保存输出到文件(ab -n 100 ... >> report.txt)。
  • 对比测试:多次运行取平均值,减少误差。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇