一直以來(lái)我都是用Loadrunner去做性能測(cè)試。Loadrunner實(shí)際上是一個(gè)很重的性能測(cè)試工具。他的功能很全面,是一把很好的牛刀。
如果我們只是需要對(duì)一個(gè)頁(yè)面做簡(jiǎn)單的性能測(cè)試,使用Loadruner這把牛刀就不是一個(gè)很好的選擇了。
所以就找了把小刀--ab來(lái)試試。這把小刀真的是輕巧又鋒利,在這里就記錄一下對(duì)ab測(cè)試過(guò)程中的一些自己的理解,供大家參考。
我們就拿百度首頁(yè)來(lái)祭刀吧。首先你得有一把刀,也就是安裝好Apache,網(wǎng)上教程一大堆就不復(fù)述了,本文使用MacBook自帶的ab命令進(jìn)行測(cè)試。
測(cè)試場(chǎng)景:模擬10個(gè)用戶,對(duì)百度首頁(yè)發(fā)起總共100次請(qǐng)求。
測(cè)試命令:ab -n 100 -c 10 https://www.baidu.com/index.html
本文主要針對(duì)ab的測(cè)試報(bào)告進(jìn)行解析,有關(guān)ab的使用方法改天再新開貼交流。
測(cè)試報(bào)告:
下面來(lái)逐行解釋我的理解,以下注釋部分有查閱網(wǎng)上資料,但所寫內(nèi)容均為自己理解之后手打內(nèi)容,希望加入自己的理解之后能讓讀者更容易理解。
bogon:~ tang$ ab -n 100 -c 10 https://www.baidu.com/index.html
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
//以上為apache的版本信息,與本次測(cè)試無(wú)關(guān)
Benchmarking www.baidu.com (be patient).....done
//以上內(nèi)容顯示測(cè)試完成度,本次測(cè)試發(fā)起請(qǐng)求數(shù)量較少,完成較快,無(wú)中間過(guò)程顯示。在請(qǐng)求數(shù)量很多時(shí)會(huì)分行顯示當(dāng)前完成數(shù)量。
Server Software: bfe/1.0.8.14 //被測(cè)試的服務(wù)器所用的軟件信息,這里使用的是百度自己開發(fā)的反向代理Baidu Front End,類似nginx。
Server Hostname: www.baidu.com //被測(cè)主機(jī)名
Server Port: 443 //被測(cè)主機(jī)的服務(wù)端口號(hào),一般http請(qǐng)求的默認(rèn)端口號(hào)是80,https默認(rèn)使用443端口
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 //加密協(xié)議
Document Path: /index.html //請(qǐng)求的具體文件
Document Length: 227 bytes //請(qǐng)求的文件index.html大小
Concurrency Level: 10 //并發(fā)級(jí)別,也就是并發(fā)數(shù),請(qǐng)求中-c參數(shù)指定的數(shù)量
Time taken for tests: 1.093 seconds //本次測(cè)試總共花費(fèi)的時(shí)間
Complete requests: 100 //本次測(cè)試總共發(fā)起的請(qǐng)求數(shù)量
Failed requests: 0 //失敗的請(qǐng)求數(shù)量。因網(wǎng)絡(luò)原因或服務(wù)器性能原因,發(fā)起的請(qǐng)求并不一定全部成功,通過(guò)該數(shù)值和Complete requests相除可以計(jì)算請(qǐng)求的失敗率,作為測(cè)試結(jié)果的重要參考。
Total transferred: 103314 bytes //總共傳輸?shù)臄?shù)據(jù)量,指的是ab從被測(cè)服務(wù)器接收到的總數(shù)據(jù)量,包括index.html的文本內(nèi)容和請(qǐng)求頭信息。
HTML transferred: 22700 bytes //從服務(wù)器接收到的index.html文件的總大小,等于Document Length*Complete requests=227bytes*100=22700 bytes
Requests per second: 91.50 [#/sec] (mean) //平均(mean)每秒完成的請(qǐng)求數(shù):QPS,這是一個(gè)平均值,等于Complete requests/Time taken for tests=100/1.093=91.50
Time per request: 109.287 [ms] (mean) //從用戶角度看,完成一個(gè)請(qǐng)求所需要的時(shí)間(因用戶數(shù)量不止一個(gè),服務(wù)器完成10個(gè)請(qǐng)求,平均每個(gè)用戶才接收到一個(gè)完整的返回,所以該值是下一項(xiàng)數(shù)值的10倍。)
Time per request: 10.929 [ms] (mean, across all concurrent requests) //服務(wù)器完成一個(gè)請(qǐng)求的時(shí)間。
Transfer rate: 92.32 [Kbytes/sec] received //網(wǎng)絡(luò)傳輸速度。對(duì)于大文件的請(qǐng)求測(cè)試,這個(gè)值很容易成為系統(tǒng)瓶頸所在。要確定該值是不是瓶頸,需要了解客戶端和被測(cè)服務(wù)器之間的網(wǎng)絡(luò)情況,包括網(wǎng)絡(luò)帶寬和網(wǎng)卡速度等信息。
Connection Times (ms)
min mean[+/-sd] median max
Connect: 47 74 12.9 74 106
Processing: 9 32 20.2 32 106
Waiting: 9 29 19.1 27 98
Total: 66 106 20.8 106 195
//這幾行組成的表格主要是針對(duì)響應(yīng)時(shí)間也就是第一個(gè)Time per request進(jìn)行細(xì)分和統(tǒng)計(jì)。一個(gè)請(qǐng)求的響應(yīng)時(shí)間可以分成網(wǎng)絡(luò)鏈接(Connect),系統(tǒng)處理(Processing)和等待(Waiting)三個(gè)部分。表中min表示最小值;mean表示平均值;[+/-sd]表示標(biāo)準(zhǔn)差(Standard Deviation) ,也稱均方差(mean square error),這個(gè)概念在中學(xué)的數(shù)學(xué)課上學(xué)過(guò),表示數(shù)據(jù)的離散程度,數(shù)值越大表示數(shù)據(jù)越分散,系統(tǒng)響應(yīng)時(shí)間越不穩(wěn)定。 median表示中位數(shù); max當(dāng)然就是表示最大值了。
//需要注意的是表中的Total并不等于前三行數(shù)據(jù)相加,因?yàn)榍叭械臄?shù)據(jù)并不是在同一個(gè)請(qǐng)求中采集到的,可能某個(gè)請(qǐng)求的網(wǎng)絡(luò)延遲最短,但是系統(tǒng)處理時(shí)間又是最長(zhǎng)的呢。所以Total是從整個(gè)請(qǐng)求所需要的時(shí)間的角度來(lái)統(tǒng)計(jì)的。這里可以看到最慢的一個(gè)請(qǐng)求花費(fèi)了195ms,這個(gè)數(shù)據(jù)可以在下面的表中得到驗(yàn)證。
Percentage of the requests served within a certain time (ms)
50% 106
66% 109
75% 111
80% 114
90% 118
95% 154
98% 176
99% 195
100% 195 (longest request)
//這個(gè)表第一行表示有50%的請(qǐng)求都是在106ms內(nèi)完成的,可以看到這個(gè)值是比較接近平均系統(tǒng)響應(yīng)時(shí)間(第一個(gè)Time per request: 109.287 [ms] (mean))
以此類推,90%的請(qǐng)求是小于等于118ms的。剛才我們看到響應(yīng)時(shí)間最長(zhǎng)的那個(gè)請(qǐng)求是195ms,那么顯然所有請(qǐng)求(100%)的時(shí)間都是小于等于195毫秒的,也就是表中最后一行的數(shù)據(jù)肯定是時(shí)間最長(zhǎng)的那個(gè)請(qǐng)求(longest request)。
通過(guò)以上說(shuō)明相信大家都能明白這些數(shù)據(jù)的意義了。如有錯(cuò)誤還請(qǐng)留言指正。
到此這篇關(guān)于Apache下分析ab性能測(cè)試結(jié)果的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://www.cnblogs.com/gumuzi/p/5617232.html