동시에 여러 URL 테스트
이 장에서는 여러 URL을 동시에 테스트하는 방법을 배웁니다. 이를 위해 두 개의 URL을 포함하도록 응용 프로그램 파일 app.py를 편집해야합니다.
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)
간단한 셸 스크립트 생성
여러 ab 호출로 셸 스크립트를 생성하여이를 수행 할 수 있습니다. 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 출력을 파일에 저장하는 셸 스크립트
여러 ab 호출로 셸 스크립트를 생성하여 Apache Bench Output을 파일에 저장할 수 있습니다. 각 줄의 끝에&;이렇게하면 명령이 백그라운드에서 실행되고 다음 명령이 실행을 시작할 수 있습니다. <filename>을 사용하여 각 URL에 대한 파일로 출력을 리디렉션 할 수도 있습니다. 예를 들어, 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 출력 데이터를 저장하는 파일입니다.
위의 스크립트가 각 URL에 대한 ab 출력을 포함하는 test1.txt 및 test2.txt 파일을 생성했는지 확인할 수 있습니다.
$ 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)