ab是apache自帶的壓力測試工具,ab是apachebench命令的縮寫。
當安裝完apache的時候,就可以在bin下面找到ab。exe然後進行apache 負載壓力測試。
ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力。
ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用很多記憶體。但卻會給目標伺服器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載。可能造成目標伺服器資源耗完,嚴重時甚至導致宕機。
示例 : ab -n 5000 -c 50 http://wind24。top/index。php
50個使用者訪問5000次伺服器
結果如下 :
Server Software: Apache/2。4。39
被測試的Web伺服器,這裡我們用的apache
Server Hostname: wind24。top
被測試的域名
Server Port: 80
被測試埠
Document Path: /index。php
請求的具體檔案
Document Length: 227 bytes
請求的檔案index。html大小
Concurrency Level: 50
併發級別,也就是併發數,請求中-c引數指定的數量
Time taken for tests: 7。113 seconds
本次測試總共花費的時間,單位為秒
Complete requests: 5000
本次測試總共發起的請求數量
Failed requests: 0
失敗的請求數量。因網路原因或伺服器效能原因,發起的請求並不一定全部成功,透過該數值和Complete requests相除可以計算請求的失敗率,作為測試結果的重要參考。
Total transferred: 103314 bytes
總共傳輸的資料量,指的是ab從被測伺服器接收到的總資料量,包括index。html的文字內容和請求頭資訊。
HTML transferred: 1135000 bytes
從伺服器接收到的index。html檔案的總大小,等於Document Length*Complete requests=227 bytes*5000=1135000 bytes
Requests per second: 702。89 [#/sec] (mean)
平均(mean)每秒完成的請求數:QPS,這是一個平均值,等於Complete requests/Time taken for tests=5000/7。113=702。89
Time per request: 71。135 [ms] (mean)
從使用者角度看,完成一個請求所需要的時間(因使用者數量不止一個,伺服器完成50個請求,平均每個使用者才接收到一個完整的返回,所以該值是下一項數值的50倍。)
Time per request: 1。423 [ms] (mean, across all concurrent requests)
伺服器完成一個請求的時間。
Transfer rate: 4627。15 [Kbytes/sec] received
網路傳輸速度。對於大檔案的請求測試,這個值很容易成為系統瓶頸所在。要確定該值是不是瓶頸,需要了解客戶端和被測伺服器之間的網路情況,包括網路頻寬和網絡卡速度等資訊。
這幾行組成的表格主要是針對響應時間也就是第一個Time per request進行細分和統計。一個請求的響應時間可以分成網路連結(Connect),系統處理(Processing)和等待(Waiting)三個部分。表中min表示最小值;mean表示平均值;[+/-sd]表示標準差(Standard Deviation) ,也稱均方差(mean square error),這個概念在中學的數學課上學過,表示資料的離散程度,數值越大表示資料越分散,系統響應時間越不穩定。median表示中位數;max當然就是表示最大值了。
這個表第一行表示有50%的請求都是在15ms內完成的。以此類推,90%的請求是小於等於1052ms的。剛才我們看到響應時間最長的那個請求是7065ms,那麼顯然所有請求(100%)的時間都是小於等於195毫秒的,也就是表中最後一行的資料肯定是時間最長的那個請求(longest request)。