AB 壓力測試工具ApacheBench ab壓測引數分析
阿新 • • 發佈:2018-12-30
首先通過uptime檢視當前負載情況, 通過watch
uptime檢視實時負載,觀察負載下降情況
Apache服務自帶了應該用於壓力測試的工具ab(ApacheBench),對應做一些簡單的壓力測試,它完全能夠勝任,本文主要介紹,在centos中不安裝Apache的情況下,安裝ab
1,ab執行的時候需要依賴包,我們先安裝依賴包,直接yum安裝就可以了
yum install apr-util
2, 下載apache的rpm包,分離ab
-
<code class="hljs elixir" style="">[root<span class="hljs-variable
- [root<span class="hljs-variable" style="">@Tomcat</span> ~]<span class="hljs-comment" style=""># cd ab</span>
-
[root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="
- [root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="hljs-comment" style=""># yumdownloader httpd #yumdownloader 需要安裝yum-utils才能使用,預設是沒有的安裝的</span>
-
[root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="
- [root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="hljs-comment" style=""># \cp -pa usr/bin/ab /usr/bin/ #複製到系統PATH就可以使用了</span></code>
3,ab簡單用法
引數很多,一般我們用 -c 和 -n 引數就可以了。
-n後面的4000代表總共發出4000個請求;-c後面的1000表示採用1000個併發(模擬1000個人同時訪問),後面的網址表示測試的目標URL。
- <table border="1" width="700" cellspacing="1" cellpadding="1"><tbody><tr><td> </td></tr></tbody></table>
- [[email protected] ab]# ab -c 1000 -n 4000 http://192.168.0.222/docs/manager-howto.html
- This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
- Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Copyright 2006 The Apache Software Foundation, http://www.apache.org/
- Benchmarking 192.168.0.222 (be patient)
- Completed 400 requests
- Completed 800 requests
- Completed 1200 requests
- Completed 1600 requests
- Completed 2000 requests
- Completed 2400 requests
- Completed 2800 requests
- Completed 3200 requests
- Completed 3600 requests
- Finished 4000 requests
- Server Software: nginx/1.4.3
- Server Hostname: 192.168.0.222
- Server Port: 80
- Document Path: /docs/manager-howto.html
- Document Length: 73924 bytes
- Concurrency Level: 1000
- Time taken for tests: 0.875928 seconds
- Complete requests: 4000
- Failed requests: 0
- Write errors: 0
- Total transferred: 296732000 bytes
- HTML transferred: 295696000 bytes
- Requests per second: 4566.59 [#/sec] (mean)
- #最重要的指標之一,相當於LR中的每秒事務數,後面括號中的mean表示這是一個平均值,越大抗壓越強
- Time per request: 218.982 [ms] (mean)
- #最重要的指標之二,相當於LR中的平均事務響應時間,後面括號中的mean表示這是一個平均值
- Time per request: 0.219 [ms] (mean, across all concurrent requests)
- Transfer rate: 330822.86 [Kbytes/sec] received
- #平均每秒網路上的流量,吞吐量,越大抗壓越強
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 4.5 0 29
- Processing: 1 17 14.5 17 653
- Waiting: 0 17 14.5 17 653
- Total: 15 18 15.2 17 674
- Percentage of the requests served within a certain time (ms)
- 50% 17
- 66% 18
- 75% 18
- 80% 18
- 90% 20
- 95% 22
- 98% 37
- 99% 40
- 100% 674 (longest request)
主要介紹裡面的幾個指標,我基本也就看這幾個指標,簡單測試足夠了,如果要全面的監控nginx,需要用到專業的監控程式,如nagios
- <strong>下面開始解析這條命令語句:</strong>
- 啟動ab,並出入三個引數(PS D:\wamp\bin\apache\Apache2.2.21\bin> .\ab -n1000 -c10 http://localhost/index.php )
- -n1000 表示請求總數為1000
- -c10 表示併發使用者數為10
- http://localhost/index.php 表示這寫請求的目標URL
- 測試結果也一目瞭然:
- 測試出的吞吐率為: Requests per second: 2015.93 [#/sec] (mean) ---除此之外還有其他一些資訊----
- Server Software //表示被測試的Web伺服器軟體名稱
- Server Hostname //表示請求的URL主機名
- Server Port //表示被測試的Web伺服器軟體的監聽埠
- Document Path //表示請求的URL中的根絕對路徑,通過該檔案的字尾名,我們一般可以瞭解該請求的型別
- Document Length //表示HTTP響應資料的正文長度
- Concurrency Level //表示併發使用者數,這是我們設定的引數之一
- Time taken for tests //表示所有這些請求被處理完成所花費的總時間
- Complete requests //表示總請求數量,這是我們設定的引數之一
- Failed requests //表示失敗的請求數量,這裡的失敗是指請求在連線伺服器、傳送資料等環節發生異常,以及無響應後超時的情況。如果接收到的HTTP響應資料的頭資訊中含有2XX以外的狀態碼,則會在測試結果中顯示另一個名為 “Non-2xx responses”的統計項,用於統計這部分請求數,這些請求並不算在失敗的請求中。
- Total transferred //表示所有請求的響應資料長度總和,包括每個HTTP響應資料的頭資訊和正文資料的長度。注意這裡不包括HTTP請求資料的長度,僅僅為web伺服器流向使用者PC的應用層資料總長度。
- HTML transferred //表示所有請求的響應資料中正文資料的總和,也就是減去了Total transferred中HTTP響應資料中的頭資訊的長度。
- Requests per second //吞吐率,計算公式:Complete requests / Time taken for tests
- Time per request //使用者平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)
- Time per requet(across all concurrent request) //伺服器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也可以這麼統計:Time per request/Concurrency Level
- Transfer rate //表示這些請求在單位時間內從伺服器獲取的資料長度,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明伺服器的處理能力達到極限時,其出口寬頻的需求量。
- Percentage of requests served within a certain time(ms) //這部分資料用於描述每個請求處理時間的分佈情況,比如以上測試,80%的請求處理時間都不超過6ms,這個處理時間是指前面的Time per request,即對於單個使用者而言,平均每個請求的處理時間。