在 Linux 上进行 Apache Bench 测试
在 Linux 上进行 AB 测试(Apache Bench,简称 ab
)非常简单,适合快速对 Web 接口或页面进行压力测试。以下是详细的Linux AB 测试教程,包括安装、使用、参数说明、常见问题及进阶技巧。
✅ 一、安装 ab(Apache Bench)
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install apache2-utils# CentOS / RHEL
sudo yum install httpd-tools -y
验证安装:
ab -V
✅ 二、基本使用语法
ab [选项] <测试URL>
🔧 常用参数说明
参数 | 示例 | 说明 |
---|---|---|
-n | -n 1000 | 总请求次数 |
-c | -c 100 | 并发用户数 |
-t | -t 60 | 最大测试时间(秒) |
-k | -k | 启用 HTTP KeepAlive |
-p | -p post.txt | POST 请求数据文件 |
-T | -T "application/json" | 指定 Content-Type |
-H | -H "Authorization: Bearer xxx" | 添加自定义请求头 |
-A | -A user:pass | 添加 Basic 认证 |
-w | -w | 以 HTML 表格形式输出结果 |
✅ 三、实战示例
1️⃣ GET 请求测试
ab -n 1000 -c 100 https://example.com/api/v1/users
2️⃣ POST 请求测试(带 JSON 数据)
准备 post.json
文件内容:
{"username": "test", "password": "123456"}
执行命令:
ab -n 500 -c 50 -p post.json -T "application/json" https://example.com/api/login
✅ 四、结果解读(关键指标)
指标 | 含义 |
---|---|
Requests per second | 吞吐量(QPS) |
Time per request | 平均响应时间 |
Failed requests | 失败请求数 |
Transfer rate | 每秒传输速率 |
50%/90%/95% | 请求延迟分布 |
✅ 五、常见问题与解决方案
问题 | 原因 | 解决方案 |
---|---|---|
apr_socket_recv: Connection reset by peer | 服务器拒绝连接 | 降低并发数 -c |
socket: Too many open files | 文件句柄限制 | ulimit -n 65535 |
ab: Invalid Concurrency | 并发数 > 20000 | 修改源码限制 |
SSL 证书问题 | 证书无效 | 添加 -k 忽略验证 |
✅ 六、进阶技巧
✅ 脚本自动化测试
#!/bin/bash
for c in 10 50 100 200; doab -n 1000 -c $c https://example.com/api >> results.txt
done
✅ 可视化结果(gnuplot)
ab -n 1000 -c 100 -g result.tsv https://example.com/api
# 用 gnuplot 绘图
✅ 七、注意事项
- 测试机与目标服务器分开,避免干扰结果
- 不要对线上生产环境直接压测
- 结合
top
、htop
、iftop
监控服务器资源 - ab 是单线程工具,复杂场景建议使用
wrk
或JMeter
✅ 总结一句话
安装 → 写命令 → 看指标 → 调并发 → 出报告
如需更复杂测试(如带登录、带 Cookie、动态参数),建议结合 JMeter 或 Locust 使用。