標籤:ab apache 壓力測試 電腦 網站
PS:網站效能壓力測試是效能調優過程中必不可少的一環。只有讓伺服器處在高壓情況下才能真正體現出各種設定所暴露的問題。Apache中有個內建的,名為ab的程式,可以對Apache或其它類型的伺服器進行網站訪問壓力測試。
ApacheBench命令原理:
ab命令會建立很多的並發訪問線程,類比多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,既可以用來測試Apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力。ab命令對發出負載的電腦要求很低,既不會佔用很高CPU,也不會佔用很多記憶體,但卻會給目標伺服器造成巨大的負載,其原理類似CC攻擊。自己測試使用也須注意,否則一次上太多的負載,可能造成目標伺服器因資源耗完,嚴重時甚至導致死機。
格式:# ab [options] [http://]hostname[:port]/path參數說明:-n requests Number of requests to perform//在測試會話中所執行的請求個數(本次測試總共要訪問頁面的次數)。預設時,僅執行一個請求。-c concurrency Number of multiple requests to make//一次產生的請求個數(並發數),就相當於一定是同時處理這個多個並發,處理完就是一個事務。預設是一次一個。
ApacheBench用法詳解:在Linux系統,一般安裝好Apache後可以直接執行;
# ab -n 1000 -c 100 http://10.1.1.128/test.php //n後面的代表總共發出1000個請求;-c後面的100表示採用100個並發(類比100個人同時訪問),後面的網址表示測試的目標URL。
650) this.width=650;" class="aligncenter size-full wp-image-253" src="http://www.forgecode.cn/wp-content/uploads/2017/05/apachebench1.png" alt="網站效能ab命令壓力測試" width="614" height="492" style="border:0px;font-family:inherit;font-style:inherit;margin:0px auto 10px;padding:0px;vertical-align:middle;height:auto;" />
結果分析:
Document Path: /test.php
#測試的頁面
Document Length: 15 bytes
#頁面大小
Concurrency Level: 100
#測試的並發數,也是-c選項
Time taken for tests: 0.575 seconds
#整個測試持續的時間
Complete requests: 1000
#完成的請求數量
Failed requests: 0
#失敗的請求數量
Write errors: 0
Total transferred: 171171 bytes
#整個過程中的網路傳輸量
HTML transferred: 15015 bytes
#整個過程中的HTML內容傳輸量
Requests per second: 1739.26 [#/sec] (mean)
#最重要的指標之一,相當於LR中的每秒事務數,後面括弧中的mean表示這是一個平均值
Time per request: 57.496 [ms] (mean)
#最重要的指標之二,相當於LR中的平均事務回應時間,後面括弧中的mean表示這是一個平均值 ----》計算公式:事務量=n/c,事務平均回應時間=總耗時/事務量
Time per request: 0.575 [ms] (mean, across all concurrent requests)
#每個串連請求實際已耗用時間的平均值
Transfer rate: 290.73 [Kbytes/sec] received
#平均每秒網路上的流量,可以協助排除是否存在網路流量過大導致回應時間延長的問題
Connection Times (ms) min mean[+/-sd] median maxConnect: 0 6 8.5 1 28Processing: 1 49 18.4 51 113Waiting: 0 46 17.2 49 91 Total: 11 55 19.5 54 140
650) this.width=650;" class="aligncenter size-full wp-image-254" src="http://www.forgecode.cn/wp-content/uploads/2017/05/apachebench2.png" alt="網站效能ab命令壓力測試" width="496" height="164" style="border:0px;font-family:inherit;font-style:inherit;margin:0px auto 10px;padding:0px;vertical-align:middle;height:auto;" />
#整個情境中所有請求的響應情況。在情境中每個請求都有一個回應時間,其中50%的使用者回應時間小於54毫秒,66%的使用者回應時間小於58毫秒,最大的回應時間小於140毫秒。對於並發請求,cpu實際上並不是同時處理的,而是按照每個請求獲得的時間片逐個輪轉處理的,所以基本上第一個Time per request時間約等於第二個Time per request時間乘以並發請求數。
總結:在遠程對web伺服器進行壓力測試,往往效果不理想(因為網路延時過大),建議使用內網的另一台或者多台伺服器通過內網進行測試,這樣得出的資料,準確度會高很多。如果只有單獨的一台伺服器,可以直接本地測試,比遠程測試效果要準確。
本文來自個人部落格:http://www.forgecode.cn/250.html
本文出自 “peter的部落格” 部落格,請務必保留此出處http://peterb.blog.51cto.com/8998797/1935087
網站效能ab命令壓力測試