一、介绍
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 环境需要先下载压缩包,在压缩包内执行命令即可。官网下载
这里需要说下,解压后需要配置下环境变量
HTTPAB_HOME:F:\install\apache-httpabtest
path:%HTTPAB_HOME%\bin
三、案例
这里我们压测一个部署在容器内的接口,这里我们测试 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:Kestrelweb服务器
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 byteshtml字节数,实际的页面传递字节数
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%1601250%的请求在25ms内返回
66%1688760%的请求在26ms内返回
75%……
80%……
90%……
95%……
98%……
99%……
100%…
参考博客
https://blog.csdn.net/jiangjunsss/article/details/123093738
https://blog.csdn.net/weixin_46785144/article/details/118672277
https://blog.csdn.net/qq_41946216/article/details/127652597