1. 程式人生 > 實用技巧 >httpd之ab壓力測試

httpd之ab壓力測試

開始測試

cd \xxx\xxx\xxx\Apache\bin
ab -n 800 -c 800 http://127.0.0.1/phpinfo.php (-n發出800個請求,-c模擬800併發,相當800人同時訪問,後面是測試url)
ab -t 60 -c 100 http://127.0.0.1/phpinfo.php 在60秒內發請求,一次100個請求。
-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標記可以抑制這些資訊

測試結果分析

這段展示的是web伺服器的資訊,可以看到伺服器採用的是Tengine,域名是kaoshi.fgf168.top,埠是80

這段是關於請求的文件的相關資訊,所在位置“/index.php”,文件的大小為1332 bytes(此為http響應的正文長度)

這段展示了壓力測試的幾個重要指標

  • Concurrency Level: 1000 ==>併發請求數
  • Time taken for tests: 101.770 seconds ==>整個測試持續的時間
  • Complete requests: 999 ==>完成的請求數
  • Failed requests: 0 ==>失敗的請求數
  • Total transferred:1510488 bytes ==>整個場景中的網路傳輸量
  • HTML transferred:1330668 bytes ==>整個場景中的HTML內容傳輸量
  • Requests per second:9.82 [#/sec] (mean) ==>吞吐率,大家最關心的指標之一,相當於 LR 中的每秒事務數,後面括號中的 mean 表示這是一個平均值
  • Time per request:101872.241 [ms] (mean) ==>使用者平均請求等待時間,大家最關心的指標之二,相當於 LR 中的平均事務響應時間,後面括號中的 mean 表示這是一個平均值
  • Time per request:101.872 [ms] (mean, across all concurrent requests) ==>伺服器平均請求處理時間,大家最關心的指標之三
  • Transfer rate:14.49 [Kbytes/sec] received ==>平均每秒網路上的流量,可以幫助排除是否存在網路流量過大導致響應時間延長的問題

這段表示網路上消耗的時間的分解

這段是每個請求處理時間的分佈情況,50%的處理時間在50864ms內,66%的處理時間在50990ms內…,重要的是看**90%**的處理時間。

傳遞POST引數的步驟:

1,新建一個檔案,裡面放入POST引數。

注意,這個承載POST引數的檔案,不依賴於字尾名。可跨平臺(比如 Linux 下用 vi 建立的檔案,win下也可以用)

POST文字內容如下:

id=1&password=123456

我把這個文字儲存成 postdata.txt ,放到了win機器下的 E盤 下。

2,使用ab命令

win如下下:

D:\PhpStudy2018\phpstudy\PHPTutorial\Apache\bin>ab -t 10 -c 100 -p E:\postdata.txt -T application/x-www-form-urlencoded http://www.fgf168.top/home/getuserinfo

參考:https://cloud.tencent.com/developer/article/1572262

   https://blog.csdn.net/chenggong2dm/article/details/51850923