在 Linux 上进行 AB 测试(Apache Bench,简称 ab
)非常简单,适合快速对 Web 接口或页面进行压力测试。以下是详细的Linux AB 测试教程,包括安装、使用、参数说明、常见问题及进阶技巧。
# 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 表格形式输出结果 |
ab -n 1000 -c 100 https://example.com/api/v1/users
准备 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; do
ab -n 1000 -c $c https://example.com/api >> results.txt
done
ab -n 1000 -c 100 -g result.tsv https://example.com/api
# 用 gnuplot 绘图
top
、htop
、iftop
监控服务器资源wrk
或 JMeter
安装 → 写命令 → 看指标 → 调并发 → 出报告
如需更复杂测试(如带登录、带 Cookie、动态参数),建议结合 JMeter 或 Locust 使用。