Apache Bench測試

- 壓力測試神器 Siegehtml

 

- Locust Web測壓工具python開源python

 

- 介紹:nginx

ab是apachebench命令的縮寫。
ab的原理:ab命令會建立多個併發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,所以,它既能夠用來測試apache的負載壓力,也能夠測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。
ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用不少內存。但卻會給目標服務器形成巨大的負載,其原理相似CC攻擊。本身測試使用也須要注意,不然一次上太多的負載。可能形成目標服務器資源耗完,嚴重時甚至致使死機。web

 

- 安裝:apache

若是安裝了apache自己會自帶ab;
若是沒有安裝,ubuntu下能夠下載apt-cache install apache2-util, 
CentOS下能夠安裝yum install httpd-tools 。

 

- 參數說明:ubuntu

- 示例:tomcat

      ab -n 200 -c 50 "http://127.0.0.1:33333/v1/manage/score/?state=2"服務器

      

      ab: 命令網絡

      -n: 參數併發

      200: 值 表示200個請求

      -c: 參數

      50:  值 表示一次產生50個請求

      "url":  值 測試的地址

-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標記能夠抑制這些信息。

 

- 測試結束後參數解釋:

  

macs-Mac-Pro-8:bin mac$ ab -n 200 -c 50 "http://127.0.0.1:33333/v1/manage/score/?state=2"
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests





Server Software:        nginx/1.4.6
#表示被測試的Web服務器軟件名稱。
Server Hostname:        192.168.77.191
#表示請求的URL主機名。
Server Port:            80
#表示被測試的Web服務器軟件的監聽端口。

Document Path:          /HelloWorld/manage.py
#測試的頁面,表示請求的URL中的根絕對路徑,經過該文件的後綴名,咱們通常能夠了解該請求的類型。
Document Length:        253 bytes
#頁面大小,表示HTTP響應數據的正文長度。

Concurrency Level:      10
#表示併發用戶數,這是咱們設置的參數之一。

Time taken for tests:   12.469 seconds
#表示全部這些請求被處理完成所花費的總時間。

Complete requests:      50000
#表示總請求數量,這是咱們設置的參數之一。

Failed requests:        0
#表示失敗的請求數量,這裏的失敗是指請求在鏈接服務器、發送數據等環節發生異常,以及無響應後超時的狀況。
#若是接收到的HTTP響應數據的頭信息中含有2XX之外的狀態碼,則會在測試結果中顯示另外一個名爲「Non
-2xx responses」的統計項,用於統計這部分請求數,這些請求並不算在失敗的請求中。 Write errors: 0 Total transferred: 25400000 bytes #表示全部請求的響應數據長度總和,包括每一個HTTP響應數據的頭信息和正文數據的長度。注意這裏不包括HTTP請求數據的長度,僅僅爲web服務器流向用戶PC的應用層數據總長度。 HTML transferred: 12650000 bytes #表示全部請求的響應數據中正文數據的總和,也就是減去了Total transferred中HTTP響應數據中的頭信息的長度。 Requests per second: 4009.86 [#/sec] (mean) #吞吐率,計算公式:Complete requests/Time taken for tests,吞吐率越高,服務器性能越好。 #最重要的指標之一,至關於LR中的每秒事務數,後面括號中的mean表示這是一個平均值 Time per request: 2.494 [ms] (mean) #用戶平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)。 #最重要的指標之二,至關於LR中的平均事務響應時間,後面括號中的mean表示這是一個平均值 Time per request: 0.249 [ms] (mean, across all concurrent requests) #每一個鏈接請求實際運行時間的平均值,服務器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也能夠這麼統計:Time per request/Concurrency Level。 Transfer rate: 1989.27 [Kbytes/sec] received #平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題,表示這些請求在單位時間內從服務器獲取的數據長度,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明服務器的處理能力達到極限時,其出口寬帶的需求量。 Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.6 0 53 Processing: 0 2 2.7 2 172 Waiting: 0 2 2.7 2 172 Total: 1 2 2.7 2 172 #網絡上消耗的時間的分解 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 3 90% 3 95% 5 98% 7 99% 10 100% 172 (longest request) #這部分數據用於描述每一個請求處理時間的分佈狀況,好比以上測試,80%的請求處理時間都不超過6ms,這個處理時間是指前面的Time per request,即對於單個用戶而言,平均每一個請求的處理時間。

 

- 總結:

  - 性能指標Requests per second吞吐率越高,服務器性能越好。

  - 在遠程對web服務器進行壓力測試,每每效果不理想(由於網絡延時過大),建議使用內網的另外一臺或者多臺服務器經過內網進行測試,這樣得出的數據,準確度會高不少。若是隻有單獨的一臺服務器,能夠直接本地測試,比遠程測試效果要準確。

 

參考:https://blog.csdn.net/werm520/article/details/46814931

相關文章
相關標籤/搜索