天天看點

使用ab 做程式的并發性能測試

在學Nginx課程的過程中了解到了Ab這個測試并發的工具,下載下傳下來進行測試。

下載下傳位址, 提取碼:3m0h

(1)打開httpd/bin/檔案夾,用指令行視窗執行ab程式。

(2)如果請求為post,需要建立一個檔案來進行操作。

例如,一個url接受一個token的參數進行登入,通路url的時候進行post操作,我們在目前檔案夾建立一個token.txt檔案

tokenId=be4afc178e5c2526ac99289cda93399dd4e
           

執行指令:

ab -n 100 -p token.txt -T 'application/x-www-form-urlencoded' https://url/login/
           

例如,一個url接受賬戶和密碼的參數進行登入,login.txt可以寫入:

userName=admin&password=123456
           

執行指令:

ab -n 100 -p login.txt -T 'application/x-www-form-urlencoded' https://url/login/
           

(3)如果請求為get請求,就可以直接寫在url裡面

ab -n 100 https://url/login/?tokenId=be4afc178e5c2526ac99289cda93399dd4e
           

(4)結果分析

網址是http+ssl的,但是這個ab工具不支援,就直接通路http網址了,結果如下所示:

使用ab 做程式的并發性能測試

Concurrency Level: 并發使用者數

Time taken for tests: 目前完成測試的時間

Complete requests: 完成的請求數量

Requests per second: 吞吐率,這個值越大越好

Time per request: 使用者平均請求等待時間

Time per request(across all concurrent requests): 伺服器平均請求等待時間

使用ab 做程式的并發性能測試

(5)運作參數文檔

n在測試會話中所執行的請求個數。預設時,僅執行一個請求。

-c一次産生的請求個數。預設是一次一個。

-t測試所進行的最大秒數。其内部隐含值是-n 50000,它可以使對伺服器的測試限制在一個固定的總時間以内。預設時,沒有時間限制。

-p包含了需要POST的資料的檔案。

-P對一個中轉代理提供BASIC認證信任。使用者名和密碼由一個:隔開,并以base64編碼形式發送。無論伺服器是否需要(即, 是否發送了401認證需求代碼),此字元串都會被發送。

-T POST資料所使用的Content-type頭資訊。

-v設定顯示資訊的詳細程度-4或更大值會顯示頭資訊,3或更大值可以顯示響應代碼(404,200等),2或更大值可以顯示警告和其他資訊。

-V顯示版本号并退出。

-w以HTML表的格式輸出結果。預設時,它是白色背景的兩列寬度的一張表。

-i執行HEAD請求,而不是GET。

-x設定<table>屬性的字元串。

-X對請求使用代理伺服器。

-y設定<tr>屬性的字元串。

-z設定<td>屬性的字元串。

-C對請求附加一個Cookie:行。其典型形式是name=value的一個參數對,此參數可以重複。

-H對請求附加額外的頭資訊。此參數的典型形式是一個有效的頭資訊行,其中包含了以冒号分隔的字段和值的對(如,"Accept-Encoding:zip/zop;8bit")。

-A對伺服器提供BASIC認證信任。使用者名和密碼由一個:隔開,并以base64編碼形式發送。無論伺服器是否需要(即,是否發送了401認證需求代碼),此字元串都會被發送。

-h顯示使用方法。

-d不顯示"percentage served within XX [ms] table"的消息(為以前的版本提供支援)。

-e産生一個以逗号分隔的(CSV)檔案,其中包含了處理每個相應百分比的請求所需要(從1%到100%)的相應百分比的(以微妙為機關)時間。由于這種格式已經“二進制化”,是以比'gnuplot'格式更有用。

-g把所有測試結果寫入一個'gnuplot'或者TSV(以Tab分隔的)檔案。此檔案可以友善地導入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行為标題。

-i執行HEAD請求,而不是GET。

-k啟用HTTP KeepAlive功能,即在一個HTTP會話中執行多個請求。預設時,不啟用KeepAlive功能。

-q如果處理的請求數大于150,ab每處理大約10%或者100個請求時,會在stderr輸出一個進度計數。此-q标記可以抑制這些資訊。
           

繼續閱讀