性能測試-ApacheBench

基本簡介

ApacheBench 是一個指令列程式,專門用來執行網站服務器的運行效能,特別是針對Apache 網站服務器。這本來是用來檢測 Apache 網站服務器可以提供的效能,特別是能夠看出Apache能提供每秒能送出多少網頁。php

工具準備

點擊[下載]html

命令

  • 在Linux系統,通常安裝好ApacheBench後能夠直接在終端中執行
  • 若是是Win系統下,打開cmd命令行窗口,cd到apache安裝目錄的bin目錄下
ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path

示例

ab -n 4000 -c 1000 http://www.ha97.com/算法

-n後面的4000表明總共發出4000個請求;-c後面的1000表示採用1000個併發(模擬1000我的同時訪問),後面的網址表示測試的目標URL。apache

輸入圖片說明

結果分析

This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.80.157 (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
Completed 4000 requests
Finished 4000 requests

Server Software: Apache/2.2.15
Server Hostname: 192.168.80.157
Server Port: 80

Document Path: /phpinfo.php
#測試的頁面
Document Length: 50797 bytes
#頁面大小

Concurrency Level: 1000
#測試的併發數
Time taken for tests: 11.846 seconds
#整個測試持續的時間
Complete requests: 4000
#完成的請求數量
Failed requests: 0
#失敗的請求數量
Write errors: 0
Total transferred: 204586997 bytes
#整個過程當中的網絡傳輸量
HTML transferred: 203479961 bytes
#整個過程當中的HTML內容傳輸量
Requests per second: 337.67 [#/sec] (mean)
#最重要的指標之一,至關於LR中的每秒事務數,後面括號中的mean表示這是一個平均值
Time per request: 2961.449 [ms] (mean)
#最重要的指標之二,至關於LR中的平均事務響應時間,後面括號中的mean表示這是一個平均值
Time per request: 2.961 [ms] (mean, across all concurrent requests)
#每一個鏈接請求實際運行時間的平均值
Transfer rate: 16866.07 [Kbytes/sec] received
#平均每秒網絡上的流量,能夠幫助排除是否存在網絡流量過大致使響應時間延長的問題
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 483 1773.5 11 9052
Processing: 2 556 1459.1 255 11763
Waiting: 1 515 1459.8 220 11756
Total: 139 1039 2296.6 275 11843
#網絡上消耗的時間的分解,各項數據的具體算法還不是很清楚

Percentage of the requests served within a certain time (ms)
50% 275
66% 298
75% 328
80% 373
90% 3260
95% 9075
98% 9267
99% 11713
100% 11843 (longest request)
#整個場景中全部請求的響應狀況。在場景中每一個請求都有一個響應時間,其中50%的用戶響應時間小於275毫秒,66%的用戶響應時間小於298毫秒,最大的響應時間小於11843毫秒。對於併發請求,cpu實際上並非同時處理的,而是按照每一個請求得到的時間片逐個輪轉處理的,因此基本上第一個Time per request時間約等於第二個Time per request時間乘以併發請求數。

參數說明

-A auth-username:password
    有的請求須要用戶名和密碼進行驗證:(例如:401 驗證需求).
-b windowsize
    TCP 發送和接收的buffer大小,單位是 bytes
-c concurrency
    併發數,同一時間有多少強求發出去,默認是1。
-C cookie-name=value
    加上Cookie:以「 name=value 」的形式,能夠重複 -C xx1=yy1 -C xx2=yy2。
-d
    不展現"percentage served within XX [ms] table".
-e csv-file
    寫一個逗號分隔的CSV文件,包含每一個百分比(from 1% to 100%)服務器執行的時間(毫秒),這個文件通常比'gunplot'有用。
-f protocol
    指定 SSL/TLS 協議 (SSL2, SSL3, TLS1, or ALL).
-g gnuplot-file
    寫全部有用的信息到TSV(Tab separate values)文件,能夠輕鬆導入Excel等裏面,label在文件第一行。
-h
    展現幫助信息
-H custom-header
    加入額外的頭信息。以冒號分割,例如("Accept-Encoding: zip/zop;8bit")
-i
    發送GET請求
-k
    打開Http的keepalive功能。在一個http會話裏執行多個請求。默認不開啓。
-n requests
    要執行的請求校驗次數。默認請求一次,請求一次的結果不能表明校驗結果,不許確。
-p POST-file
    包含POST數據文件
-P proxy-auth-username:password
    支持基本Auth代理路由驗證。在(http code : 407 的時候須要)
-q
    當程序有150個請求,輸出以每10%或100個來顯示。-q 用來取消這些信息。
-r
    在socket錯誤的時候不退出。
-s
    若是用在SSl協議,功能還處在試驗階段,你不須要用它。
-S
    不展現終止和標準值,也不展現警告信息。
-t timelimit
    校驗花費的最大時間,內部設置-n 50000 次。使用這個選項在特定時間內測試。默認不開啓
-T content-type
    用於POST/PUT 數據,例如eg. application/x-www-form-urlencoded. Default: text/plain.
-u PUT-file
    PUT 的文件,記着加上-T
-v verbosity
    設置輸出等級, 4 輸出頭信息,3 輸出響應碼(404,200) 2 輸出警告和信息
-V
    展現版本,而後退出。
-w
    輸出結果到html裏的table,默認兩列,白色背景。
-x <table>-attributes
    String to use as attributes for <table>. Attributes are inserted <table here >.
-X proxy[:port]
    使用代理。
-y <tr>-attributes
    設置屬性到 <tr>.
-z <td>-attributes
    設置屬性到 <td>.
-Z ciphersuite
    指定 SSL/TLS 密碼套件 (See openssl ciphers).

總結

說明:我找了一個內網比較複雜的頁面進行測試,咱們經過結果能夠大概看到網站平均吞吐量在442左右,須要注意的是若是你也須要測試最好找一個內網的頁面或者站點進行測試,這樣網速等其餘區因素的影響會下降到最小,我開始是拿咱們博客園進行測試,可是剛好今天網絡很不穩定因此數據等待結果很是慢,因此爲了減少偏差,咱們儘可能選用內網進行測試。你們經過結果能夠清晰的估算出咱們網站目前的狀況!經過使用也能對比出ab相對於我以前說起到的Jmeter輕量不少.windows

相關文章
相關標籤/搜索