读书笔记之LoadRunner性能测试巧匠训练营(八)

《LoadRunner性能测试巧匠训练营》第6章 开源性能测试工具Apache ab快速入门

1.Apache ab的安装使用

Apache ab是著名的Web服务器软件Apache附带的一个小工具,它可以同时模拟多个并发请求,测试Apache等Web服务器的最大承载压力,Apache的下载地址为http://tomcat.apache.org/,在Linux下可以直接用yum安装,在Linux下使用yum的安装命令为:yum install httpd,安装完成后,在Apache的bin目录下即可找到ab。
测试否正确安装ab工具,在bin目录下输入.\ab–V命令,如果安装正确,则会将其版本信息打印出来,如下所示:

2.Apache ab的快速入门

Apche ab的基本用法是./ab[options]URL,其中常见参数如下。
·-n:表示请求总数。
·-c:表示并发用户数,并发用户数不能大于请求总数,否则会报错Cannot use concurrency level greater than total number of requests。
·URL:表示请求的目标URL,注意必须在后方加上“/”,或指定相应文件。
·-t:测试的最大时间,单位为s,默认隐藏为50000。
·-v:显示信息的详细程度。-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
·-p:配合-T使用,表示包含了需要POST数据的文件,文件格式如“p1=1&p2=2”,使用方法是-p 111.txt。
·-T:POST数据所使用的Content-type头信息,如-T“application/x-www-form-urlencoded”。
·-w:以HTML表的格式输出结果。
·-i:执行HEAD请求,而不是GET。
·-C:cookie-name=value对请求附加一个Cookie行。其典型形式是name=value的一个参数对。此参数可以重复,用逗号分隔。可以借助session实现原理传递JSESSIONID参数,实现保持会话的功能,如-C“c1=1234,c2=2,c3=3,JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8”。
·-P:proxy-auth-username:password对一个中转代理提供BASIC认证信任。用户名和密码由一个“:”隔开,并以Base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。
虽然参数很多,但是测试最常用的参数为为-n和-c,如./ab-c 1000-n 100 http://127.0.0.1/index.php。

3.Apache ab实战

对某个网站进行10个并发总共执行1000次的压测,命令如下:./ab -n1000 -c10 [URL],测试结果如下:


以下是对测试结果的解释。
·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,相当于loadrunner中的TPS(每秒事务数)。
·Time per request用户平均请求等待时间,计算公式为Time token for tests/(Complete requests/Concurrency Level),相当于loadrunner中的平均事务响应时间。
·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,这个统计很好地说明服务器的处理能力达到极限时,其出口宽带的需求量。
·Connection Times(ms):其中min(最小值)、mean(平均值)、[+/-sd](方差)、median(中位数)、max(最大值)。
·Connect:socket链路建立消耗,代表网络状况好坏。
·Processing:写入缓冲区消耗+链路消耗+服务端消耗。
·Waiting:写入缓冲区消耗+链路消耗+服务端消耗+读取数据消耗。
·Total:单个事务总时间。
·Percentage of requests served within a certain time(ms):这部分数据用于描述每个请求处理时间的分布情况。例如,以上测试,80%的请求处理时间都不超过6ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。
上面的测试结果表明,在10个并发情况下,访问XX网站的响应时间都在12ms以下。可以根据以上测试数据,设定一个测试目标,比如要求99%的响应时间在2ms内,就可以设定不同的并发用户数进行测试,从而测试出最终满足结果的并发数。

4.Apache ab总结注意事项

虽然Apache ab使用起来很简单,但是它也有自己本身的限制。
1)Apache ab判断成功与否只是判断2xx响应代码,不接收服务器的返回值,但是LoadRunner要完整的接收服务器的返回值,所以在同样的响应时间下,Apache ab测试支持的并发数会大于LoadRunner,TPS值也响应的会比LoadRunner大。
2)Apache ab在运行的测试的并发数与Apache ab所运行机器的CPU颗粒数有很大关系,CPU颗粒数越大,测试结果所支持的并发数越大
3)Apache ab适合测试HTTP协议的一个URL连接的并发,特别是Web系统的首页,Apache ab也可以进行参数传递,一样也能实现传递一个用户名和密码这带参数传递请求的性能测试。对于复杂场景还是建议用LoadRunner或者JMeter,因为GUI的工具操作跟入门会方便很多。
4)对于简单的测试,如一个接口测试,可以选用Apache ab快速进行测试,而不用去采用LoadRunner这种庞大的商业测试工具,Apache ab的测试结果数据基本满足测试结果数据的要求,像LoadRunner的结果数据虽然非常多,但是很多都不会用到,最常用的也就是响应时间、TPS、事务成功率、吞吐量,这些Apache ab结果中也能体现。
到这里完全理解了为什么开发人员在Linux测试的TPS值比自己在Windows用LoadRunner测试的TPS值高的原因了:一是因为Apache ab不接收服务器的返回值,所以响应以及网络带宽上会占用优势;二是因为开发人员在Linux下进行测试,而且用的是24颗CPU的实体机进行测试,远远比小白Windows的双核CPU强力很多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值