欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apache ab压力测试

程序员文章站 2022-06-25 20:25:32
...

   Apache-ab是著名的Web服务器软件Apache附带的一个小工具,它可以模拟多个并发请求,测试服务器的最大承载压力。
  ab 是apachebench的缩写,ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

1.下载安装

我下载的是windows版:
下载地址:官网http://httpd.apache.org/
(1)打开官网
Apache ab压力测试
(2)找到windows的下载版本
Apache ab压力测试
(3)可以直接选择 ApacheHausApache ab压力测试
(4)x86是32位的,x64是64位的,根据自己的操作系统选择下载Apache ab压力测试
(5)下载完成后直接解压到具体目录,找到bin目录:
Apache ab压力测试
(6)测试运行
在Windows系统下,打开cmd命令行窗口,定位到apache安装目录的bin目录下,输入ab回车,返回该命令的帮助信息即代表安装成功
Apache ab压力测试

2.命令参数详细文档,参考官网:http://httpd.apache.org/docs/2.2/programs/ab.html

-n
即requests Number,用于指定压力测试总共的请求次数,默认时,仅执行1一个请求
-c
即concurrency,用于指定压力测试的并发数,就是一次产生的请求个数,默认一次一个
-t
即timelimit,等待响应的最大时间(单位:秒),可以使对服务器的测试限制在一个固定的总时间以内,默认时没有时间限制
-b
即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p
即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u
即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T
即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v
即verbosity,指定打印帮助信息的冗余级别;设置显示信息的详细程度,–4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w
以HTML表格形式打印结果,默认时,它是白色背景的两列宽度的一张表
-i
使用HEAD请求代替GET请求。
-x
插入字符串作为table标签的属性。
-y
插入字符串作为tr标签的属性。
-z
插入字符串作为td标签的属性。
-C
添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个),-C cookie-name=value 对请求附加一个Cookie:行,此参数可以重复,用逗号分割
-H
添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A
添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P
添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开,password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-X
指定使用的代理服务器和端口号,例如:“127.0.0.1:88”。
-V
打印版本号并退出。
-k
使用HTTP的KeepAlive特性。
-k
使用HTTP的KeepAlive特性。
-d
不显示百分比。
-S
不显示预估和警告信息。
-g
输出结果信息到gnuplot格式的文件中。
-e
输出结果信息到CSV格式的文件中。
-r
指定接收到错误信息时不退出程序。
-h
显示用法信息,其实就是ab -help。

虽然ab可以配置的参数选项比较多,但是,一般情况下我们只需要使用-c和-n参数就可以了

ab -n 1000 -c 100 http://www.ml.com/api/user/userLogin
//上例表示总共访问http://www.ml.com/api/user/userLogin这个接口1000次,100并发同时执行

3.测试报告

Apache ab压力测试

4.数据分析

(1)
Apache ab压力测试
(2)网络上消耗的时间的分解:
Apache ab压力测试
3.请求的响应时间,整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间
Apache ab压力测试
其中 50% 的用户响应时间小于 364 毫秒
66 % 的用户响应时间小于 373 毫秒
以此类推
最大的响应时间小于 1559 毫秒