參考
http://kiwi.csie.chu.edu.tw/blog/archives/138
AB(Apache Benchmark)數據解讀
ab指令的語法是 ab -c {同時進行的request數量} -t {時間} {url} 或是 ab -c {同時進行的request數量} -n {次數} {url}
ab的測試方式有兩種:
1. -t {秒數}
2. -n {request次數}
兩種方式都可以取得可以觀察的數據,不過如果-n太少的話,就沒有意義。我通常都是使用-t 30或是-t 60。而這樣的測試有另一個好處是,在測試的其中,可以找真的人在一定時間內去實際點點看你的程式,如果時間都過去了(先別跟他講已經跑完了),他還是覺得速度沒有差,那表示效能有到使用者能夠接受的感受。而需要效能數據,其實也是為了使用經驗法則推算出應用程式最多可以容納幾個使用者註冊。
以下舉個一個例子來解讀:
[root@dsa1 ~]# ab -c 20 -t 30 http://some.machine.com/test/
#這裡是版權宣告
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking xxx (be patient)
#這裡會將完成的req次數顯示出來,如果每超過5000會再次顯示
Finished 1028 requests
#主機資訊
Server Software: Apache/2.2.3
Server Hostname: xxx
Server Port: 80
Document Path: /test/
#要注意,如果傳輸的資料大小超過1MB,表示使用ADSL的人多少會因為資料量感受到緩慢
#,就可能不會是準確的測試結果
Document Length: 8943 bytes
#這裡表示你下了 -c 20
Concurrency Level: 20
#總測試時間,應該不會跟-t的時間差太遠
Time taken for tests: 30.27095 seconds
Complete requests: 1028
#這裡的Fail表示在TCP階段就連線失敗,如果fail太多次,出來的數據絕對不正確
Failed requests: 0
Write errors: 0
Total transferred: 9478392 bytes
HTML transferred: 9197475 bytes
#每秒鐘的Request次數,可以視為效能的指標。因為這次測試我們使用了-c 20
#表示在20個人同時連線的情況下,還可以保持每秒34個request。
Requests per second: 34.24 [#/sec] (mean)
#表示這20個人裡「平均」每個人感受到的回應時間(不包括瀏覽器顯示出來的時間)
#約是584ms,也就是0.58秒。
Time per request: 584.185 [ms] (mean)
Time per request: 29.209 [ms] (mean, across all concurrent requests)
Transfer rate: 308.25 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 49 382.7 0 3000
Processing: 91 519 1287.7 262 20913
Waiting: 90 518 1287.7 260 20912
Total: 91 569 1542.9 262 21543
#這個曲線圖比較重要,算是ab的數據價值所在。這裡表示了這20個人所感受到的
#回應速度曲線,可以從0.2秒到21秒不等。也就是說,在這裡約有20*90%=18人,
#他們感受到的速度會低於1秒,而其他人會高於1秒。這個比平均數值還要更能表達
#使用者大多都是感受到什麼速度,因為在伺服器很忙碌的情況下,會有像21秒這種
#數值,這是會大大地拖累平均速度及每秒request數。
Percentage of the requests served within a certain time (ms)
50% 262
66% 327
75% 397
80% 449
90% 730
95% 1338
98% 5224
99% 8504
100% 21543 (longest request)