ab 压力测试工具入门教程
一、概述
ab(Apache Bench)是 Apache 服务器自带的一个 Web 压力测试工具,简单易用,非常适合用来测试服务器的并发处理能力。
二、ab 命令基本用法
ab 命令的基本格式如下:
ab [options] [http://]hostname[:port]/path
三、常用参数详解
| 参数 | 说明 |
|---|---|
| -n requests | 总请求数 |
| -c concurrency | 并发数 |
| -t timelimit | 测试持续时间(秒) |
| -p postfile | POST 请求数据文件路径 |
| -T content-type | POST 请求的 Content-Type |
| -v verbosity | 显示详细程度(1-4) |
| -k | 启用 HTTP KeepAlive 功能 |
| -w | 以 HTML 表格形式输出结果 |
| -i | 使用 HEAD 请求代替 GET |
四、GET 请求压力测试示例
模拟 100 个并发用户,共发送 1000 个请求:
ab -n 1000 -c 100 http://www.example.com/
五、POST 请求压力测试
使用 ab 进行 POST 请求测试需要准备两个参数:
- -T:设置 Content-Type,通常为 application/x-www-form-urlencoded
- -p:指定包含 POST 数据的文件路径
POST 参数文件格式
创建一个文件(如 postfile),内容为 URL 编码的参数:
user_id=haonima&query=东方红太阳升
中文需要使用 URL 编码转换:
# 使用 Python 转换
from urllib import quote
print(quote('东方红太阳升'))
# 或者使用在线工具:http://tool.chinaz.com/tools/urlencode.aspx
POST 测试命令示例
ab -n 1000 -c 50 -T 'application/x-www-form-urlencoded' -p postfile http://172.25.24.221:8880/project
六、测试结果分析
执行测试后,ab 会输出详细的测试结果。以下是关键指标说明:
服务器信息
Server Software: TornadoServer/4.4.1
Server Hostname: 172.25.24.221
Server Port: 8880
测试概要
Concurrency Level: 50 # 并发数
Time taken for tests: 370.201 seconds # 测试耗时
Complete requests: 1000 # 完成请求数
Failed requests: 0 # 失败请求数
Requests per second: 2.70 [#/sec] # 每秒请求数(吞吐量)
Time per request: 18510.060 [ms] # 平均请求等待时间
连接时间分析
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 378 18470 1042.0 18284 20271
Waiting: 377 18470 1042.0 18284 20271
请求响应时间分布
Percentage of the requests served within a certain time (ms)
502846671275994801169065295 13598 25799 267100 271 (longest request)
七、不同操作系统安装 ab 工具
Linux (CentOS/RHEL)
yum install httpd-tools
Ubuntu/Debian
apt-get install apache2-utils
macOS
macOS 自带 Apache,可以直接使用 ab 命令,无需额外安装。
Windows
下载 Apache 安装包,解压后在 bin 目录下找到 ab.exe 可执行文件。
八、实战示例:Tomcat 压力测试
测试 Tomcat 服务器性能:
ab -n 5000 -c 200 http://localhost:8080/
九、实战示例:Nginx 压力测试
测试 Nginx 服务器性能:
ab -n 10000 -c 500 http://localhost:80/index.html
十、注意事项
- 压力测试会对服务器造成较大负载,请在测试环境或低峰期进行
- ab 本身不支持 KeepAlive,如需测试需添加 -k 参数
- 实际并发能力受网络带宽、服务器配置等多因素影响
- 建议多次测试取平均值,结果更准确
- 测试时注意观察服务器资源使用情况(CPU、内存、磁盘 I/O)
十一、总结
ab 是一个简单实用的 HTTP 压力测试工具,适合快速评估 Web 服务器的性能。通过合理设置参数,可以模拟不同的并发场景,帮助我们发现系统瓶颈,为性能优化提供数据支持。

发表评论 取消回复