性能测试工具一之ab(一)
使用AB测试来验证设计效果 #生活技巧# #创意技巧# #设计思维与创新#
ab工具简介
ab全称为:apache bench
ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
安装
下载地址:https://www.apachehaus.com/cgi-bin/download.plx
(注意自己的Windows系统位数下载相应的版本),下载完成后解压文件,打开,命令行,进入到bin的目录下(如果想在命令行直接运行要把bin的路径写在系统变量的path中,例如我的路径为:H:\ab\httpd-2.4.33-o102o-x64-vc14-r2\Apache24\bin,将此路径加到系统变量的path),运行httpd -k install,返回:
说明成功了,输入ab -h 查看用法:
参数详解
-n 即requests,用于指定压力测试的请求数。
-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,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:”Apache=1234”(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:”Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开转化为base64编码传值。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的代理服务器和端口号,例如:”126.10.10.3:88”。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。
用法样例
执行ab -n 10 -c 10 “https://tieba.baidu.com/index.html?traceid=“会报如下错误:SSL not compiled in; no https support,如果出现这样的错误把ab后面加上abs,abs用于执行https的请求,ab拥有执行http的请求。
测试结果
以上是测试结果的数据,除此之外还有其他一些信息,需要说明下,如下:
Server Software表示被测试的Web服务器软件名称。
Server Hostname表示请求的URL主机名。
Server Port表示被测试的Web服务器软件的监听端口。
Document Path表示请求的URL中的根绝对路径,通过该文件的后缀名,我们一般可以了解该请求的类型。
Document Length表示HTTP响应数据的正文长度。
Concurrency Level表示并发用户数,这是我们设置的参数之一。
Time taken for tests表示所有这些请求被处理完成所花费的总时间。
Complete requests表示总请求数量,这是我们设置的参数之一。
Failed requests表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。
Total transferred表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。
HTML transferred表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。
Requests per second吞吐率,计算公式:Complete requests/Time taken for tests
Time per request用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。
Time per requet(across all concurrent request)服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。
Transfer rate表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。
Percentage of requests served within a certain time(ms)这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过6ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。
总的说来,ab只适合简单的性能测试,缺点很明显:
1.不能做复杂的场景测试,
2.不能做有参数化的性能测试(反正我没发现可以做。。。。),
3.看不到返回结果,只能看到返回状态码不是以2开头的数量(Non-2xx responses),如果公司业务自己定义了状态码,那就啥也看不到了,因为返回的都是200。。。。
4.其他的没有再试,如果只测测服务器的性能还是可以的
参考官网:http://httpd.apache.org/docs/2.2/programs/ab.html
网址:性能测试工具一之ab(一) https://www.yuejiaxmz.com/news/view/182422
相关内容
Apache 压力测试工具abLinux Web压力测试工具[ApacheBench(ab) / webbench]
[性能测试] Benchmarks(压力测试工具汇总)
常用压力测试工具锦集 · 测试之家
压力、负载、性能测试工具总结(持续更新。。。)
压测工具如何选择? ab、locust、Jmeter、go压测工具【单台机器100w连接压测实战】
Apache Web压力测试工具Apache Bench
常用压力测试工具锦集
三种压力测试工具 http
不同性能压测工具对比