1. 程式人生 > >AB 壓力測試工具ApacheBench ab壓測引數分析

AB 壓力測試工具ApacheBench ab壓測引數分析

首先通過uptime檢視當前負載情況, 通過watch uptime檢視實時負載,觀察負載下降情況

Apache服務自帶了應該用於壓力測試的工具ab(ApacheBench),對應做一些簡單的壓力測試,它完全能夠勝任,本文主要介紹,在centos中不安裝Apache的情況下,安裝ab

1,ab執行的時候需要依賴包,我們先安裝依賴包,直接yum安裝就可以了

yum install apr-util

2, 下載apache的rpm包,分離ab

  1. <code class="hljs elixir" style="">[root<span class="hljs-variable
    " style="">@Tomcat</span> ~]<span class="hljs-comment" style=""># mkdir ab</span>
  2. [root<span class="hljs-variable" style="">@Tomcat</span> ~]<span class="hljs-comment" style=""># cd ab</span>
  3. [root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="
    hljs-comment" style=""># yum -y install yum-utils</span>
  4. [root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="hljs-comment" style=""># yumdownloader httpd  #yumdownloader 需要安裝yum-utils才能使用,預設是沒有的安裝的</span>
  5. [root<span class="hljs-variable" style="">@Tomcat</span> ab]<span class="
    hljs-comment" style=""># rpm2cpio httpd-2.2.3-91.el5.centos.i386.rpm |cpio -idmv</span>
  6. [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。

  1. <table border="1" width="700" cellspacing="1" cellpadding="1"><tbody><tr><td> </td></tr></tbody></table>  
  1. [[email protected] ab]# ab -c 1000 -n 4000 http://192.168.0.222/docs/manager-howto.html
  2. This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0  
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  4. Copyright 2006 The Apache Software Foundation, http://www.apache.org/
  5. Benchmarking 192.168.0.222 (be patient)  
  6. Completed 400 requests  
  7. Completed 800 requests  
  8. Completed 1200 requests  
  9. Completed 1600 requests  
  10. Completed 2000 requests  
  11. Completed 2400 requests  
  12. Completed 2800 requests  
  13. Completed 3200 requests  
  14. Completed 3600 requests  
  15. Finished 4000 requests  
  16. Server Software:        nginx/1.4.3  
  17. Server Hostname:        192.168.0.222  
  18. Server Port:            80  
  19. Document Path:          /docs/manager-howto.html  
  20. Document Length:        73924 bytes  
  21. Concurrency Level:      1000  
  22. Time taken for tests:   0.875928 seconds  
  23. Complete requests:      4000  
  24. Failed requests:        0  
  25. Write errors:           0  
  26. Total transferred:      296732000 bytes  
  27. HTML transferred:       295696000 bytes  
  28. Requests per second:    4566.59 [#/sec] (mean)  
  29. #最重要的指標之一,相當於LR中的每秒事務數,後面括號中的mean表示這是一個平均值,越大抗壓越強  
  30. Time per request:       218.982 [ms] (mean)   
  31. #最重要的指標之二,相當於LR中的平均事務響應時間,後面括號中的mean表示這是一個平均值  
  32. Time per request:       0.219 [ms] (mean, across all concurrent requests)  
  33. Transfer rate:          330822.86 [Kbytes/sec] received  
  34. #平均每秒網路上的流量,吞吐量,越大抗壓越強  
  35. Connection Times (ms)  
  36.               min  mean[+/-sd] median   max  
  37. Connect:        0    0   4.5      0      29  
  38. Processing:     1   17  14.5     17     653  
  39. Waiting:        0   17  14.5     17     653  
  40. Total:         15   18  15.2     17     674  
  41. Percentage of the requests served within a certain time (ms)  
  42.   50%     17  
  43.   66%     18  
  44.   75%     18  
  45.   80%     18  
  46.   90%     20  
  47.   95%     22  
  48.   98%     37  
  49.   99%     40  
  50.  100%    674 (longest request)  


主要介紹裡面的幾個指標,我基本也就看這幾個指標,簡單測試足夠了,如果要全面的監控nginx,需要用到專業的監控程式,如nagios

  1. <strong>下面開始解析這條命令語句:</strong>  
  1. 啟動ab,並出入三個引數(PS D:\wamp\bin\apache\Apache2.2.21\bin> .\ab -n1000 -c10 http://localhost/index.php )
  2. -n1000    表示請求總數為1000  
  3. -c10      表示併發使用者數為10  
  4. http://localhost/index.php   表示這寫請求的目標URL
  5. 測試結果也一目瞭然:   
  6. 測試出的吞吐率為:   Requests per second: 2015.93 [#/sec] (mean)  ---除此之外還有其他一些資訊----  
  7. Server Software //表示被測試的Web伺服器軟體名稱
  8. Server Hostname  //表示請求的URL主機名
  9. Server Port     //表示被測試的Web伺服器軟體的監聽埠
  10. Document Path   //表示請求的URL中的根絕對路徑,通過該檔案的字尾名,我們一般可以瞭解該請求的型別
  11. Document Length   //表示HTTP響應資料的正文長度
  12. Concurrency Level  //表示併發使用者數,這是我們設定的引數之一
  13. Time taken for tests //表示所有這些請求被處理完成所花費的總時間
  14. Complete requests  //表示總請求數量,這是我們設定的引數之一
  15. Failed requests    //表示失敗的請求數量,這裡的失敗是指請求在連線伺服器、傳送資料等環節發生異常,以及無響應後超時的情況。如果接收到的HTTP響應資料的頭資訊中含有2XX以外的狀態碼,則會在測試結果中顯示另一個名為       “Non-2xx responses”的統計項,用於統計這部分請求數,這些請求並不算在失敗的請求中。
  16. Total transferred   //表示所有請求的響應資料長度總和,包括每個HTTP響應資料的頭資訊和正文資料的長度。注意這裡不包括HTTP請求資料的長度,僅僅為web伺服器流向使用者PC的應用層資料總長度。
  17. HTML transferred    //表示所有請求的響應資料中正文資料的總和,也就是減去了Total transferred中HTTP響應資料中的頭資訊的長度。
  18. Requests per second   //吞吐率,計算公式:Complete requests / Time taken for tests
  19. Time per request   //使用者平均請求等待時間,計算公式:Time token for tests/(Complete requests/Concurrency Level)
  20. Time per requet(across all concurrent request)   //伺服器平均請求等待時間,計算公式:Time taken for tests/Complete requests,正好是吞吐率的倒數。也可以這麼統計:Time per request/Concurrency Level
  21. Transfer rate    //表示這些請求在單位時間內從伺服器獲取的資料長度,計算公式:Total trnasferred/ Time taken for tests,這個統計很好的說明伺服器的處理能力達到極限時,其出口寬頻的需求量。
  22. Percentage of requests served within a certain time(ms)   //這部分資料用於描述每個請求處理時間的分佈情況,比如以上測試,80%的請求處理時間都不超過6ms,這個處理時間是指前面的Time per request,即對於單個使用者而言,平均每個請求的處理時間。