ab压力测试_CentOS安装压力测试工具ApacheBench(ab)
官方文檔:
https://httpd.apache.org/docs/2.4/programs/ab.html
ab原理:
ab命令會創(chuàng)建很多的并發(fā)訪問線程,模擬多個(gè)訪問者同時(shí)對某一URL地址進(jìn)行訪問。它的測試目標(biāo)是基于URL的,因此,既可以用來測試Apache的負(fù)載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務(wù)器的壓力。 ab命令對發(fā)出負(fù)載的計(jì)算機(jī)要求很低,既不會占用很高CPU,也不會占用很多內(nèi)存,但卻會給目標(biāo)服務(wù)器造成巨大的負(fù)載,其原理類似CC攻擊。自己測試使用也須注意,否則一次上太多的負(fù)載,可能造成目標(biāo)服務(wù)器因資源耗完,嚴(yán)重時(shí)甚至導(dǎo)致死機(jī)。
Apache服務(wù)自帶了應(yīng)該用于壓力測試的工具ab(ApacheBench),對應(yīng)做一些簡單的壓力測試,它完全能夠勝任,本文主要介紹,在centos中不安裝Apache的情況下,安裝ab
#安裝步驟:
簡單用法:
參數(shù)很多,一般我們用 -c 和 -n 參數(shù)就可以了。
#ab -c 1000 -n 4000 http://www.yoursite.com/index #必須要具體到某頁面-n 總共發(fā)出4000個(gè)請求 -c 采用1000個(gè)并發(fā)(模擬1000個(gè)人同時(shí)訪問) 后面的網(wǎng)址表示測試的目標(biāo) URL (必須具體到某頁面)
返回結(jié)果參數(shù)說明:
Server Software 表示被測試的Web服務(wù)器軟件名稱,這里是Apache/2.2.19,它來自于http響應(yīng)數(shù)據(jù)的頭信息,所以如果是我們自己編寫的Web服務(wù)器軟或者修改開源Web服務(wù)器軟件的源代碼,便可以隨意改寫這里的名稱。
vi /usr/local/apache/conf/httpd.conf #隱藏具體版本信息ServerSignature OffServerTokens ProdServer Hostname 表示請求的URL中的主機(jī)部分名稱,它來自于http請求數(shù)據(jù)的頭信息,這里我們請求的URL是http://localhost/index.html,所以主機(jī)名為localhost,說明我們的請求是從Web服務(wù)器端發(fā)起的。
Server Port 表示被測試的Web服務(wù)器軟件的監(jiān)聽端口,為了方便測試,我們后面會對多個(gè)不同的Web服務(wù)器軟件使用不同的監(jiān)聽端口。
Document Path 表示請求的URL中根絕對路徑,它同樣來自于http請求數(shù)據(jù)的頭信息,通過它的后綴名,我們一般可以理解該請求的類型。
Document Length 表示http響應(yīng)數(shù)據(jù)的正文長度。
Concurrency Level 表示并發(fā)用戶數(shù),這是我們設(shè)置的參數(shù)。
Time taken for tests 表示所有這些請求被處理完成花費(fèi)的總時(shí)間。順便提一下,某些Apache版本如2.2.4附帶的ab,對于這一統(tǒng)計(jì)項(xiàng)存在一些計(jì)算上的bug,當(dāng)總請求數(shù)較少時(shí),其統(tǒng)計(jì)的總時(shí)間會無法小于0.1s。
Complete requests 表示總請求數(shù),這是我們設(shè)置的相應(yīng)參數(shù)。
Failed requests 表示失敗的請求數(shù),這里的失敗是指請求的連接服務(wù)器、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)等環(huán)節(jié)發(fā)生異常,以及無響應(yīng)后超時(shí)的情況。對于超時(shí)時(shí)間的設(shè)置可以用ab的-t參數(shù)。 而如果接收到的http響應(yīng)數(shù)據(jù)的頭信息中含有2xx以外的狀態(tài)碼,則會在測試結(jié)果顯示另一個(gè)名為“Non-2xx responses”的統(tǒng)計(jì)項(xiàng),用于統(tǒng)計(jì)這部分請求數(shù),這些請求并不算是失敗的請求。
Total transferred 表示所有請求的響應(yīng)數(shù)據(jù)長度總和,包括每個(gè)http響應(yīng)數(shù)據(jù)的頭信息和正文數(shù)據(jù)的長度。注意這里不包括http請求數(shù)據(jù)的長度,所以Total transferred代表了從Web服務(wù)器流向用戶PC的應(yīng)用層數(shù)據(jù)總長度。通過使用ab的-v參數(shù)即可查看詳細(xì)的http頭信息。
HTML transferred 表示所有請求的響應(yīng)數(shù)據(jù)中正文數(shù)據(jù)的總和,也就是減去了Total transferred中http響應(yīng)數(shù)據(jù)中頭信息的長度。
Requests per second 這便是我們重點(diǎn)關(guān)注的吞吐率,它等于: Complete requests / Time taken for tests
Time per request 這便是前面提到的用戶平均請求等待時(shí)間,它等于: Time taken for tests / (Complete requests /Concurrency Level)
Time per request?(across all concurrent requests) 這便是前面提到的服務(wù)器平均請求處理時(shí)間,它等于: Time taken for tests / Complete requests 這正是吞吐率的倒數(shù)。同時(shí),它也等于: Time per request / Concurrency Level
Transfer rate 表示這些請求在單位時(shí)間內(nèi)從服務(wù)器獲取的數(shù)據(jù)長度,它等于: Total transferred / Time taken for tests 這個(gè)統(tǒng)計(jì)項(xiàng)可以很好的說明服務(wù)器在處理能力達(dá)到限制時(shí),其出口帶寬的需求量。 利用前面介紹的有關(guān)帶寬的知識,不難計(jì)算出結(jié)果。
Percentage of the requests served within a certain time(ms) 這部分?jǐn)?shù)據(jù)用于描述每個(gè)請求處理時(shí)間的分布情況,比如在以上測試結(jié)果中,80%請求的處理時(shí)間都不超過1ms,而99%的請求都不超過2ms。注意這里的處理時(shí)間,是指前面的Time per request,即對于單個(gè)用戶而言,平均每個(gè)請求處理的時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的ab压力测试_CentOS安装压力测试工具ApacheBench(ab)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdp分享码2020_和平精英2020黄
- 下一篇: 如何升级浏览器_绿茶浏览器app下载安装