性能测试工具一之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
性能测试工具一之ab(一)_第1张图片
     (注意自己的Windows系统位数下载相应的版本),下载完成后解压文件,打开,命令行,进入到bin的目录下(如果想在命令行直接运行要把bin的路径写在系统变量的path中,例如我的路径为:H:\ab\httpd-2.4.33-o102o-x64-vc14-r2\Apache24\bin,将此路径加到系统变量的path),运行httpd -k install,返回:
这里写图片描述
     说明成功了,输入ab -h 查看用法:
性能测试工具一之ab(一)_第2张图片
参数详解
     -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的请求。     性能测试工具一之ab(一)_第3张图片
测试结果
     以上是测试结果的数据,除此之外还有其他一些信息,需要说明下,如下:
     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

你可能感兴趣的:(性能测试)