壓力測試之ab測試

2021-07-09 13:59:15 字數 4296 閱讀 1772

一、介紹

ab是apache自帶的壓力測試工具,非常實用,他不僅能對apache伺服器進行壓力測試,還可以對 nginx、tomcat、iis等伺服器進行測試

二、原理

ab命令會建立多個併發訪問縣城,模擬多個訪問者同時對某一url位址進行訪問,他的測試目標是基於url的。他既可以測試負載壓力,也可以測試web伺服器的壓力

ab命令對發出的負責計算機要求很低,他不會占用很高cpu也不會占用很高記憶體,但會給伺服器造成很高的負載。其原理類似ddos攻擊,所以使用時需要注意,可能造成目標伺服器資源耗盡,嚴重時導致宕機。

三、ab的安裝

四、引數說明

-n: 請求數

-c: 一次產生的請求個數,預設為1

-t: 測試所進行的最大秒數,預設沒有時間限制

-p:包含了需要post的資料的檔案

-p: 

對乙個中轉**提供basic認證信任。使用者名稱和密碼由乙個:隔開,並以base64編碼形式傳送。無論伺服器是否需要(即, 是否傳送了401認證需求**),此字串都會被傳送

-t: 

post資料所使用的content-type頭資訊

-v: 

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

-v: 

顯示版本號並退出。

-w: 

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

-i: 

執行head請求,而不是get。

-x: 

設定屬性的字串。

-x: 

對請求使用**伺服器

-y: 

設定屬性的字串。

-z: 

設定屬性的字串。

-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標記可以抑制這些資訊。

五、測試結果說明

吞吐率(requests per second):描述伺服器併發處理能力,單位是reqs/s,只的是在某個併發使用者數下單位時間內能處理的請求數。吞吐率是基於使用者併發數的。

併發連線數(he number of concurrent connections):指的是某個時刻伺服器所接受的請求書目

併發使用者數(concurrency level): 要注意區分這個概念和併發連線數之間的區別,乙個使用者可能同時會產生多個會話,也即連線數。在

下,ie7

支援兩個併發連線,

ie8支援

6個併發連線,

firefox3支援4

個併發連線,所以相應的,我們的併發使用者數就得除以這個基數

使用者平均請求等待時間(

time per request)

:處理完成所有請求數所花費的時間

/(總請求數

/併發使用者數)

伺服器平均請求等待時間(

time per request:across all concurrent requests)

:處理完成所有請求數所花費的時間

/總請求數,即:

time taken for/testscomplete requests,

可以看到,它是吞吐率的倒數。

同時,它也等於使用者平均請求等待時間

/併發使用者數,即

time per request/concurrency level

六、例項說明

這裡拿了京東的乙個錯誤頁面做說明:

bash-3.2# ab -n 1000 -c 100

licensed to the apache software foundation,

benchmarking www.jd.com (be patient)

completed 100 requests

completed 200 requests

completed 300 requests

completed 400 requests

completed 500 requests

completed 600 requests

completed 700 requests

completed 800 requests

completed 900 requests

completed 1000 requests

finished 1000 requests

server software:        jdws

server hostname:        www.jd.com

server port:            80

document path:          /error2.aspx

document length:        16503 bytes

concurrency level:      100

time taken for tests:   13.908 seconds

complete requests:      1000

failed requests:        0

total transferred:      16870000 bytes

html transferred:       16503000 bytes

requests per second:    71.90 [#/sec] (mean)

time per request:       1390.829 [ms] (mean)

time per request:       13.908 [ms] (mean, across all concurrent requests)

transfer rate:          1184.52 [kbytes/sec] received

connection times (ms)

min  mean[+/-sd] median   max

connect:        7  127 282.3     47    1593

processing:    27  697 1327.0    190   12730

waiting:       11  167 374.4     57    3810

total:         75  824 1425.5    287   12785

percentage of the requests served within a certain time (ms)

50%    287

66%    586

75%    952

80%   1209

90%   1652

95%   2874

98%   5060

99%   8673

100%  12785 (longest request)

分析:

ab壓力測試 mysql MySQL壓力測試

1.什麼是壓力測試 壓力測試是針對系統的一種效能測試,但是測試資料與業務邏輯無關,更加簡單直接的測試讀寫效能 2.壓力測試的指標 qps 每秒鐘處理完請求的次數 tps 每秒鐘處理完的事務次數 併發量 系統能同時處理的請求數 3.壓力測試工具 mysqlslap sysbench jmeter 長時...

ab 壓力測試

apache自帶的ab的壓力測試 以前安裝好apache總是不知道該如何測試apache的效能,現在總算找到乙個測試工具了。就是apache自帶的測試工具ab apache benchmark 在apache的bin目錄下。格式 ab options http hostname port path ...

ab壓力測試

1.我的環境是windows下的phpstudy,進入到apache bin目錄裡面有個ab.exe,壓力測試命令如下 ab.exe c 200 n 1000 2.mysql.php 如下 正常的邏輯思維,壓力增大後,導致資料庫num欄位成為負數,將下面 貼上到自己 下測試即可。在test資料庫下,...