ab的全稱是Apache Bench,是Apache自帶的網(wǎng)絡(luò)壓力測試工具,相比于LR、JMeter,是我所知道的 Http 壓力測試工具中最簡單、最通用的。
ab命令對發(fā)出負(fù)載的計(jì)算機(jī)要求很低,不會(huì)占用很高CPU和內(nèi)存,但也能給目標(biāo)服務(wù)器產(chǎn)生巨大的負(fù)載,能實(shí)現(xiàn)基礎(chǔ)的壓力測試。
在進(jìn)行壓力測試時(shí),最好與服務(wù)器使用交換機(jī)直連,以獲取最大的網(wǎng)絡(luò)吞吐量。
ab的安裝很簡單,安裝Apache會(huì)自動(dòng)安裝,如果要單獨(dú)安裝ab,可以使用yum安裝:
yum -y install httpd-tools
ab命令選項(xiàng)
ab命令最基本的參數(shù)是-n和-c:
-n 執(zhí)行的請求數(shù)量-c 并發(fā)請求個(gè)數(shù)
其他參數(shù):
-t 測試所進(jìn)行的最大秒數(shù)-p 包含了需要POST的數(shù)據(jù)的文件-T POST數(shù)據(jù)所使用的Content-type頭信息-k 啟用HTTP KeepAlive功能,即在一個(gè)HTTP會(huì)話中執(zhí)行多個(gè)請求,默認(rèn)時(shí),不啟用KeepAlive功能
命令示例:
ab -n 1000 -c 100 http://www.baidu.com/
ab性能指標(biāo)
使用ab命令測試的結(jié)果,可以參考其中的中文解釋:
Document Path: / ###請求的資源Document Length: 50679 bytes ###文檔返回的長度,不包括相應(yīng)頭Concurrency Level: 3000 ###并發(fā)個(gè)數(shù)Time taken for tests: 30.449 seconds ###總請求時(shí)間Complete requests: 3000 ###總請求數(shù)Failed requests: 0 ###失敗的請求數(shù)Write errors: 0Total transferred: 152745000 bytesHTML transferred: 152037000 bytesRequests per second: 98.52 [#/sec] (mean) ###平均每秒的請求數(shù)Time per request: 30449.217 [ms] (mean) ###平均每個(gè)請求消耗的時(shí)間Time per request: 10.150 [ms] (mean, across all concurrent requests) ###上面的請求除以并發(fā)數(shù)Transfer rate: 4898.81 [Kbytes/sec] received ###傳輸速率Connection Times (ms) min mean[+/-sd] median maxConnect: 2 54 27.1 55 98PRocessing: 51 8452 5196.8 7748 30361Waiting: 50 6539 5432.8 6451 30064Total: 54 8506 5210.5 7778 30436Percentage of the requests served within a certain time (ms) 50% 7778 ###50%的請求都在7778Ms內(nèi)完成 66% 11059 75% 11888 80% 12207 90% 13806 95% 18520 98% 24232 99% 24559 100% 30436 (longest request)
對壓力測試的結(jié)果重點(diǎn)關(guān)注吞吐率(Requests per second)、用戶平均請求等待時(shí)間(Time per request)指標(biāo):
1、吞吐率(Requests per second):
服務(wù)器并發(fā)處理能力的量化描述,單位是reqs/s,指的是在某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)處理的請求數(shù)。某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)能處理的最大請求數(shù),稱之為最大吞吐率。
記住:吞吐率是基于并發(fā)用戶數(shù)的。這句話代表了兩個(gè)含義:
a、吞吐率和并發(fā)用戶數(shù)相關(guān)
b、不同的并發(fā)用戶數(shù)下,吞吐率一般是不同的
計(jì)算公式:總請求數(shù)/處理完成這些請求數(shù)所花費(fèi)的時(shí)間,即
Request per second=Complete requests/Time taken for tests
必須要說明的是,這個(gè)數(shù)值表示當(dāng)前機(jī)器的整體性能,值越大越好。
2、用戶平均請求等待時(shí)間(Time per request):
計(jì)算公式:處理完成所有請求數(shù)所花費(fèi)的時(shí)間/(總請求數(shù)/并發(fā)用戶數(shù)),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
3、服務(wù)器平均請求等待時(shí)間(Time per request:across all concurrent requests):
計(jì)算公式:處理完成所有請求數(shù)所花費(fèi)的時(shí)間/總請求數(shù),即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒數(shù)。
同時(shí),它也等于用戶平均請求等待時(shí)間/并發(fā)用戶數(shù),即
Time per request/Concurrency Level。
記錄,為更好的自己!
新聞熱點(diǎn)
疑難解答
圖片精選