超實(shí)用!分享一個(gè)壓力測試的神器:ab工具

軟件壓力測試是一種基本的質(zhì)量保證行為,它是每個(gè)重要軟件測試工作的一部分。因此壓力測試是十分重要的,那么怎么進(jìn)行壓力測試呢?下面本篇文章就來給大家分享一個(gè)超實(shí)用壓力測試神器–ab工具(apache bench),希望對大家有所幫助!

相關(guān)視頻教程推薦:《千萬級數(shù)據(jù)并發(fā)解決方案(理論+實(shí)戰(zhàn))》

寫在前面


在學(xué)習(xí)ab工具之前,我們需了解幾個(gè)關(guān)于壓力測試的概念

  • 吞吐率(Requests per second)
    概念:服務(wù)器并發(fā)處理能力的量化描述,單位是reqs/s,指的是某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)處理的請求數(shù)。某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)能處理的最大請求數(shù),稱之為最大吞吐率。
    計(jì)算公式:總請求數(shù) / 處理完成這些請求數(shù)所花費(fèi)的時(shí)間,即
    Request per second = Complete requests / Time taken for tests

  • 并發(fā)連接數(shù)(The number of concurrent connections)
    概念:某個(gè)時(shí)刻服務(wù)器所接受的請求數(shù)目,簡單的講,就是一個(gè)會(huì)話。

  • 并發(fā)用戶數(shù)(The number of concurrent users,Concurrency Level)
    概念:要注意區(qū)分這個(gè)概念和并發(fā)連接數(shù)之間的區(qū)別,一個(gè)用戶可能同時(shí)會(huì)產(chǎn)生多個(gè)會(huì)話,也即連接數(shù)。

  • 用戶平均請求等待時(shí)間(Time per request)
    計(jì)算公式:處理完成所有請求數(shù)所花費(fèi)的時(shí)間/ (總請求數(shù) / 并發(fā)用戶數(shù)),即
    Time per request = Time taken for tests /( Complete requests / Concurrency Level)

  • 服務(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

ab工具簡介


ab全稱為:apache bench

  • 在官網(wǎng)上的解釋如下:

ab是Apache超文本傳輸協(xié)議(HTTP)的性能測試工具。其設(shè)計(jì)意圖是描繪當(dāng)前所安裝的Apache的執(zhí)行性能,主要是顯示你安裝的Apache每秒可以處理多少個(gè)請求。

  • 其他網(wǎng)站解釋:

ab是apache自帶的壓力測試工具。ab非常實(shí)用,它不僅可以對apache服務(wù)器進(jìn)行網(wǎng)站訪問壓力測試,也可以對或其它類型的服務(wù)器進(jìn)行壓力測試。比如nginx、tomcat、IIS等。

下載ab工具


進(jìn)入apache官網(wǎng) http://httpd.apache.org/ 下載apache即可

啟動(dòng)ab工具


以windows環(huán)境下,apache安裝路徑為C:apacheApache24為例

打開終端,輸入命令
cd C:apacheApache24bin
即可啟動(dòng)ab

開始測試


輸入命令
ab -n 100 -c 10 http://test.com/
其中-n表示請求數(shù),-c表示并發(fā)數(shù)

其余命令請參見 http://apache.jz123.cn/programs/ab.html

測試結(jié)果分析


上面的命令運(yùn)行完畢后就出來測試報(bào)告了

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
完整測試報(bào)告

  • 這段展示的是web服務(wù)器的信息,可以看到服務(wù)器采用的是nginx,域名是wan.bigertech.com,端口是80

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
? ?服務(wù)器信息

  • 這段是關(guān)于請求的文檔的相關(guān)信息,所在位置“/”,文檔的大小為338436 bytes(此為http響應(yīng)的正文長度)

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
? ?文檔信息

  • 這段展示了壓力測試的幾個(gè)重要指標(biāo)

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
? ?重要指標(biāo)

Concurrency?Level:?100 //并發(fā)請求數(shù) Time?taken?for?tests:?50.872?seconds //整個(gè)測試持續(xù)的時(shí)間 Complete?requests:?1000 //完成的請求數(shù) Failed?requests:?0 //失敗的請求數(shù)  Total?transferred:?13701482?bytes //整個(gè)場景中的網(wǎng)絡(luò)傳輸量 HTML?transferred:?13197000?bytes //整個(gè)場景中的HTML內(nèi)容傳輸量  Requests?per?second:?19.66?[#/sec]?(mean) //吞吐率,大家最關(guān)心的指標(biāo)之一,相當(dāng)于?LR?中的每秒事務(wù)數(shù),后面括號(hào)中的?mean?表示這是一個(gè)平均值 Time?per?request:?5087.180?[ms]?(mean) //用戶平均請求等待時(shí)間,大家最關(guān)心的指標(biāo)之二,相當(dāng)于?LR?中的平均事務(wù)響應(yīng)時(shí)間,后面括號(hào)中的?mean?表示這是一個(gè)平均值 Time?per?request:?50.872?[ms]?(mean,?across?all?concurrent?requests) //服務(wù)器平均請求處理時(shí)間,大家最關(guān)心的指標(biāo)之三  Transfer?rate:?263.02?[Kbytes/sec]?received //平均每秒網(wǎng)絡(luò)上的流量,可以幫助排除是否存在網(wǎng)絡(luò)流量過大導(dǎo)致響應(yīng)時(shí)間延長的問題
  • 這段表示網(wǎng)絡(luò)上消耗的時(shí)間的分解

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
? ?網(wǎng)絡(luò)消耗時(shí)間

  • 這段是每個(gè)請求處理時(shí)間的分布情況,50%的處理時(shí)間在4930ms內(nèi),66%的處理時(shí)間在5008ms內(nèi)…,重要的是看90%的處理時(shí)間。

超實(shí)用!分享一個(gè)壓力測試的神器:ab工具
? ?響應(yīng)情況

關(guān)于登錄的問題


有時(shí)候進(jìn)行壓力測試需要用戶登錄,怎么辦?
請參考以下步驟:

  • 先用賬戶和密碼登錄后,用開發(fā)者工具找到標(biāo)識(shí)這個(gè)會(huì)話的Cookie值(Session ID)記下來

  • 如果只用到一個(gè)Cookie,那么只需鍵入命令:
    ab -n 100 -C key=value http://test.com/

    如果需要多個(gè)Cookie,就直接設(shè)Header:
    ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/

總結(jié)


總的來說ab工具ab小巧簡單,上手學(xué)習(xí)較快,可以提供需要的基本性能指標(biāo),但是沒有圖形化結(jié)果,不能監(jiān)控。因此ab工具可以用作臨時(shí)緊急任務(wù)和簡單測試。

同類型的壓力測試工具還有:webbench、siege、http_load等

推薦學(xué)習(xí):nginx教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享