Apache附帶的ab工具(本機使用的PHP環境是WAMP內建環境,ab工具位于D:\wamp\bin\apache\Apache2.2.21\bin)非常容易使用,ab可以直接在Web伺服器本地發起測試請求,這至關重要,因為有些時候我們需要測試的僅僅是伺服器的處理性能,并不想摻雜着網絡傳輸時間的影響。ab進行一切測試的本質都是基于HTTP的,是以可以說ab對于Web伺服器軟體的黑盒性能測試,獲得的一切資料和計算結果,都是可以通過HTTP來解釋的。
測試本機是否正确安裝ab工具,在power shell想将目前目錄定位到bin,輸入 .\ab –V 指令,如果安裝正确,則會将其版本資訊列印出來。
1
2
3
4
<code>PS D:\wamp\bin\apache\Apache2.2.21\bin> .\ab -V</code>
<code>This is ApacheBench, Version 2.3 <$Revision: 655654 $></code>
<code>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http:</code><code>//www</code><code>.zeustech</code>
<code>Licensed to The Apache Software Foundation, <a href=</code><code>"http://www.apache.org/"</code><code>>http:</code><code>//www</code><code>.apache.org/<</code><code>/a</code><code>></code>
好了,一切就緒,下面提供一個壓力測試的執行個體:
輸入指令 PS D:\wamp\bin\apache\Apache2.2.21\bin> .\ab -n1000 -c10 http://localhost/index.php
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<code>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http:</code><code>//www</code><code>.zeustech.net/</code>
<code>Licensed to The Apache Software Foundation, http:</code><code>//www</code><code>.apache.org/</code>
<code> </code>
<code>Benchmarking localhost (be patient)</code>
<code>Completed 100 requests</code>
<code>Completed 200 requests</code>
<code>Completed 300 requests</code>
<code>Completed 400 requests</code>
<code>Completed 500 requests</code>
<code>Completed 600 requests</code>
<code>Completed 700 requests</code>
<code>Completed 800 requests</code>
<code>Completed 900 requests</code>
<code>Completed 1000 requests</code>
<code>Finished 1000 requests</code>
<code>Server Software: Apache</code><code>/2</code><code>.2.21</code>
<code>Server Hostname: localhost</code>
<code>Server Port: 80</code>
<code>Document Path: </code><code>/index</code><code>.php</code>
<code>Document Length: 211 bytes</code>
<code>Concurrency Level: 10</code>
<code>Time taken </code><code>for</code> <code>tests: 0.496 seconds</code>
<code>Complete requests: 1000</code>
<code>Failed requests: 0</code>
<code>Write errors: 0</code>
<code>Non-2xx responses: 1000</code>
<code>Total transferred: 400000 bytes</code>
<code>HTML transferred: 211000 bytes</code>
<code>Requests per second: 2015.93 [</code><code>#/sec] (mean)</code>
<code>Time per request: 4.960 [ms] (mean)</code>
<code>Time per request: 0.496 [ms] (mean, across all concurrent requests)</code>
<code>Transfer rate: 787.47 [Kbytes</code><code>/sec</code><code>] received</code>
<code>Connection Times (ms)</code>
<code> </code><code>min mean[+</code><code>/-sd</code><code>] median max</code>
<code>Connect: 0 0 0.4 0 1</code>
<code>Processing: 2 5 1.1 4 12</code>
<code>Waiting: 2 4 1.1 4 12</code>
<code>Total: 2 5 1.1 5 12</code>
<code>Percentage of the requests served within a certain </code><code>time</code> <code>(ms)</code>
<code> </code><code>50% 5</code>
<code> </code><code>66% 5</code>
<code> </code><code>75% 5</code>
<code> </code><code>80% 6</code>
<code> </code><code>90% 6</code>
<code> </code><code>95% 7</code>
<code> </code><code>98% 8</code>
<code> </code><code>99% 9</code>
<code> </code><code>100% 12 (longest request)</code>
下面開始解析這條指令語句:啟動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,即對于單個使用者而言,平均每個請求的處理時間。
本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1619387,如需轉載請自行聯系原作者