https://httpd.apache.org/docs/2.4/programs/ab.html
- License: Apache 2.0
- Multithreaded: No
- Scriptable: No
- Written in: C
Install
다음 명령어를 이용하여 설치할 수 있다.
# Debian/Ubuntu
sudo apt install apache2-utils
# CentOS/RHEL
sudo yum install httpd-tools
# Mac OS
# default로 설치되어 있음
How to use
총 600개의 요청을 한번(동시 접속)에 10개씩 보내는 테스트를 진행하는 경우, 다음과 같이 사용하면 된다.
ab -n 600 -c 10 http://localhost:8000/api/ping
Flags
- -n requests : 수행할 요청 수 (default 1)
- -c concurrency : 한 번에 수행할 요청 수 (동시 접속자 수로, default 1)
- -t timelimit : 테스트 최대 수행 시간(초단위). 정해진 시간 동안 테스트를 진행할 때 사용. (내부적으로 -n 50000을 가정하고 수행됨)
- -s timeout : 각 요청의 최대 수행 시간(초단위). 정해진 시간을 초과하는 요청은 실패로 처리할 때 사용. (default 30초)
- -p postfile : POST data가 포함된 파일을 설정한다. (-T 옵션도 함께 설정해야 함)
- -u putfile : PUT dat가 포함된 파일을 설정한다. (-T 옵션도 함께 설정해야 함)
- -T content-type : POST/PUT에 사용될 Content-Type 헤더 값을 설정한다. (default는 'text/plain')
- -H attribute : 헤더 값 설정
- -m method : method 이름 설정
- -g filename : 테스트 결과를 gnuplot 포맷의 파일로 기록한다.
- -e filename : 테스트 결과를 누적 백분율 형태로 CSV 포맷의 파일로 기록한다.
Results
결과는 다음과 같은 형태로 확인 가능하다.
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
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)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Finished 600 requests
Server Software: WSGIServer/0.2
Server Hostname: 127.0.0.1
Server Port: 8000
Document Path: /api/ping
Document Length: 21 bytes
Concurrency Level: 10
Time taken for tests: 1.094 seconds # 전체 테스트 소요 시간
Complete requests: 600 # 응답 완료된 요청 수
Failed requests: 0 # 실패한 요청 수
Total transferred: 204000 bytes
HTML transferred: 12600 bytes
Requests per second: 548.44 [#/sec] (mean) # 초당 응답 요청 수
Time per request: 18.233 [ms] (mean) # 요청당 응답 시간
Time per request: 1.823 [ms] (mean, across all concurrent requests)
Transfer rate: 182.10 [Kbytes/sec] received # 초당 전송량
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 4 18 2.1 18 27
Waiting: 2 15 1.9 15 22
Total: 4 18 2.1 18 27
Percentage of the requests served within a certain time (ms)
50% 18
66% 19
75% 19
80% 20
90% 20
95% 21
98% 22
99% 23
100% 27 (longest request)
POST method를 사용하여 데이터를 전송하고 싶은 경우, 다음과 같이 설정한다.
ab -T "application/json" \ -p "data.json" \ http://127.0.0.1:8000/api/post_data
Report
gnuplot을 이용하거나, 결과 값을 CSV로 export 한 다음, 엑셀에서 report를 생성할 수 있다.
gnuplot에 대한 사용법은 아래 페이지에서 확인할 수 있다.
'일하는 > Cloud, Web' 카테고리의 다른 글
[Testing] 웹 서버 성능 테스트 / Performance Testing (0) | 2021.12.13 |
---|---|
[Testing][웹 서버 성능 테스트 도구] Wrk (1) | 2021.11.11 |
Django REST Framework API Key 사용법 (0) | 2021.06.25 |
[AWS] EC2 인스턴스에서 CodeCommit 사용 설정하기 (0) | 2021.06.07 |
[AWS] AWS CodeCommit (0) | 2021.06.07 |