一、介绍
ab 命令会创建很多的并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问。它的测试目标是基于 URL 的,因此,既可以用来测试 Apache 的负载压力,也可以测试 nginx、lighthttp、tomcat、IIS 等其它 Web 服务器的压力。
ab 命令对发出负载的计算机要求很低,既不会占用很高 CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似 CC×××。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。
二、安装
ab 支持多平台部署,安装起来也相对较为简单。如下:
2.1 Linux
linux 环境安装比较简单,一行命令即可
yum -y install httpd-tools
2.2 Windows
windows 环境需要先下载压缩包,在压缩包内执行命令即可。官网下载
三、案例
这里我们压测一个部署在容器内的接口,这里我们测试 7000 并发,100000 请求
命令在 linux 与 windows 环境通用。
如果get请求带参数,就在url部分加上双引号包起来。
ab -c 7000 -n 100000 "http://192.168.200.167:8089/Wikibit/Advertisement?type=38&app=12&ver=121"
可以看到,在压测时 内存、cpu 、网络出口都比较活跃
-c 并发数量
-n 请求总数
这里举例比较简单,ab 有许多参数,正所谓别人领进门,修行在个人。
四、返回说明
各项指标会因为网络、服务器性能、等指标而不同
标题 | 值 | 说明 |
---|---|---|
Server Software: | Kestrel | web服务器 |
Server Hostname: | 192.168.200.167 | 请求的服务器 |
Server Port: | 8089 | 请求的端口 |
— | — | — |
Document Path: | Wikibit/Advertisement?type=38&app=12&ver=121 请求路径 | |
Document Length: | 25 bytes | 页面大小 |
— | — | — |
Concurrency Level: | 7000 | 并发数 |
Time taken for tests: | 227.346 | 共使用了多少时间 |
Complete requests: | 100000 | 成功请求数 |
Failed requests: | 0 | 失败请求数 |
Write errors: | 0 | 错误次数 |
Total transferred: | 230400000 bytes | 总共传输字节数,包含http的头信息等 |
HTML transferred: | 214300000 bytes | html字节数,实际的页面传递字节数 |
Requests per second: | 439.86 [#/sec] (mean) | 每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量 |
Time per request: | 15914.231 [ms] (mean) | 用户平均请求等待时间 |
Time per request: | 2.273 [ms] (mean, across all concurrent requests) | 服务器平均处理时间,也就是服务器吞吐量的倒数 |
Transfer rate: | 989.68 [Kbytes/sec] received | 每秒获取的数据长度 |
Percentage of the requests served within a certain time (ms)
— | — | — |
---|---|---|
50% | 16012 | 50%的请求在25ms内返回 |
66% | 16887 | 60%的请求在26ms内返回 |
75% | … | … |
80% | … | … |
90% | … | … |
95% | … | … |
98% | … | … |
99% | … | … |
100% | … |