- Apache Bench 教程
- Apache Bench - 主頁
- Apache Bench - 概述
- Apache Bench - 環境設定
- 測試我們的示例應用程式
- 併發測試多個網址
- 動態頁面測試準備
- 動態頁面的順序測試用例
- 輸出比較
- Apache Bench 有用資源
- Apache Bench - 快速指南
- Apache Bench - 有用資源
- Apache Bench - 討論
併發測試多個網址
在本章中,我們將瞭解如何同時測試多個 URL。為此,我們需要編輯我們的應用程式檔案 app.py 以包含兩個 URL -
from bottle import Bottle, run
app = Bottle()
@app.route('/')
@app.route('/hello1')
def hello():
return "Hello World! It is first URL."
@app.route('/hello2')
def hello():
return "Hello World! It is second URL."
run(app,server = 'gunicorn',host = '127.0.0.1', port = 8080)
建立一個簡單的 shell 指令碼
你可以透過建立帶有多個 ab 呼叫的 shell 指令碼來執行此操作。建立一個檔案 test.sh 並向其中新增以下行 -
ab -n 100 -c 10 http://127.0.0.1:8080/hello1 ab -n 100 -c 10 http://127.0.0.1:8080/hello2
新增上述行後,儲存並關閉該檔案。使檔案可執行 -
chmod u+x test.sh
現在讓我們執行指令碼 -
./test.sh
為了避免重複和澄清目的,我們將只顯示 ab 輸出中的相關部分,並用點來表示已省略的部分,如下所示。
輸出
.
.
.
Document Path: /hello1
Document Length: 732 bytes
Concurrency Level: 10
Time taken for tests: 0.040 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Total transferred: 90000 bytes
HTML transferred: 73200 bytes
Requests per second: 2496.13 [#/sec] (mean)
Time per request: 4.006 [ms] (mean)
Time per request: 0.401 [ms] (mean, across all concurrent requests)
Transfer rate: 2193.87 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.8 0 3
Processing: 1 3 1.0 4 5
Waiting: 0 3 1.2 4 4
Total: 1 4 0.6 4 5
WARNING: The median and mean for the processing time are not within a normal deviation
These results are probably not that reliable.
.
.
.
將 Apache Bench 輸出儲存到檔案的 Shell 指令碼
你可以透過建立帶有多個 ab 呼叫的 shell 指令碼將 Apache Bench 輸出儲存到檔案。在每一行的末尾,放置一個 &;;這會使命令在後臺執行,並讓下一條命令開始執行。你還會希望將每個 URL 的輸出重定向到一個檔案,使用 <filename>。例如,我們的檔案 test.sh 在修改後將如下所示 -
$ ab -n 100 -c 10 http://127.0.0.1:8080/hello1 > test1.txt & $ ab -n 100 -c 10 http://127.0.0.1:8080/hello2 > test2.txt &
此處,test1.txt 和 test2.txt 是儲存輸出資料的檔案。
你可以檢查上面的指令碼是否建立了兩個檔案 test1.txt 和 test2.txt,其中包含各個 URL 的 ab 輸出 -
$ ls -l
輸出
... -rw-r--r-- 1 root root 5225 May 30 12:11 out.data -rwxr--r-- 1 root root 118 Jun 10 12:24 test.sh -rw-r--r-- 1 root root 1291 Jun 10 12:31 test1.txt -rwxr--r-- 1 root root 91 Jun 10 13:22 test2.sh -rw-r--r-- 1 root root 1291 Jun 10 12:31 test2.txt ...
注意情況
在使用 ab 時,你應該注意未經警告就進行的失敗測試。例如,如果你檢查一個錯誤的 URL,你可能會得到類似以下內容(我們在這裡故意更改了埠)。
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://127.0.0.1:805/
輸出
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software:
Server Hostname: 127.0.0.1
Server Port: 805
Document Path: /
Document Length: Variable
Concurrency Level: 10
Time taken for tests: 0.002 seconds
Complete requests: 100
Failed requests: 150
(Connect: 0, Receive: 100, Length: 0, Exceptions: 50)
Keep-Alive requests: 0
Total transferred: 0 bytes
HTML transferred: 0 bytes
Requests per second: 44984.26 [#/sec] (mean)
Time per request: 0.222 [ms] (mean)
Time per request: 0.022 [ms] (mean, across all concurrent requests)
Transfer rate: 0.00 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 0 0.2 0 0
Waiting: 0 0 0.0 0 0
Total: 0 0 0.2 0 0
Percentage of the requests served within a certain time (ms)
50% 0
66% 0
75% 0
80% 0
90% 0
95% 0
98% 0
99% 0
100% 0 (longest request)
廣告