Apache AB性能测试工具使用教程
服务器负载太大而影响程序效率是很常见的,Apache服务器自带有一个叫ab(ApacheBench)的工具,在bin目录下。ab专门用于HTTPServer的benchmarktesting,可以同时模拟多个并发请求,使用这个轻巧的工具我们可以对服务器进行负载测试。
今天在公司也用它作一些测试,现在整理了下它的一些东西分享下。
首先我们要得到Apache服务器的目录下bin的路径,我电脑中的路径是D:\wamp\bin\apache\Apache2.2.21\bin,打开cmd,转到这个目录下,在其中输入:ab-n10-c10https://www.nhooo.com/这条指令,这条指令的意思是:ab-n全部请求数-c并发数测试URL。这里值得注意的是,如果你的测试URL是一个网站的网址,请记得在其后加上/,否则会无法工作。
以下是我运行的结果:
D:\wamp\bin\apache\Apache2.2.21\bin>ab-n10-c10https://www.nhooo.com/
ThisisApacheBench,Version2.3<$Revision:655654$>
Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/
LicensedtoTheApacheSoftwareFoundation,http://www.apache.org/ Benchmarkingwww.nhooo.com(bepatient)…..done
ServerSoftware: Microsoft-IIS/6.0 //Microsoft-IIS服务器版本6.0
ServerHostname: www.nhooo.com //服务器主机名
ServerPort: 80 //服务器端口 DocumentPath: / //测试的页面文档
DocumentLength: 32639bytes //文档大小 ConcurrencyLevel: 10 //并发数
Timetakenfortests: 13.548seconds //整个测试持续的时间
Completerequests: 10 //完成的请求数量
Failedrequests: 0 //失败的请求数量
Writeerrors: 0
Totaltransferred: 331070bytes //整个场景中的网络传输量
HTMLtransferred: 326390bytes //整个场景中的HTML内容传输量
Requestspersecond: 0.74[#/sec](mean) //每秒事务数,后面括号中的mean表示这是一个平均值
Timeperrequest: 13547.775[ms](mean) //平均事务响应时间,后面括号中的mean表示这是一个平均值
Timeperrequest: 1354.777[ms](mean,acrossallconcurrentrequests) //每个请求实际运行时间的平均值
Transferrate: 23.86[Kbytes/sec]received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 ConnectionTimes(ms) //网络上消耗的时间的分解
min mean[+/-sd]median max
Connect: 1 2 0.8 2 3
Processing: 216339813420.2 2957 13540
Waiting: 130532043595.3 2096 13169
Total: 216439833420.0 2959 13541
//以下是整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2959毫秒,66%的用户响应时间小于3074毫秒,最大的响应时间小于13541毫秒。由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Timeperrequest时间约等于第二个Timeperrequest时间乘以并发请求数。
Percentageoftherequestsservedwithinacertaintime(ms)
50% 2959
66% 3074
75% 3974
80% 4008
90% 13541
95% 13541
98% 13541
99% 13541
100% 13541(longestrequest)