AB(Apache HTTP server benchmarking tool)를 활용해 벤치마킹 테스트

치치·2020년 12월 23일
0

서버 환경 테스트 도중 다량의 요청이 일어날 때 얼마나 많은 트래픽이 발생하며, 지연시간이 어떻게 나올지 궁금하였다.
이를 쉽게 측정할 수 있는 도구를 찾다보니 AB라는 것을 찾아 테스트 해 보았다.

실행 방법은 간단.

# ab -n 100 -c 100 [URL]
  • -n : 총 요청 수, 기본 값은 1번
  • -c : 동시에 요청하는 요청 수, 기본 값은 1번
  • URL : 테스트 할 URL
  • -H : 헤더 정보

-c 옵션으로 요청한 수 만큼 최초 요청 후
결과가 들어온 순서대로 다음 요청으로 대체된다.
(1,2,3) --> 요청
(1,2,3) --> 2요청이 종료
(1,4,3) --> 4 요청

특정 사이트에 요청하는 예를 보자.
A 라는 사이트에 헤더에 특정 토큰을 넣고 get 방식으로 호출한다.

# ab -n 10000 -c 1000 -H "token:sdlkfjslkdjf323f!!@fwef23" https://api.testServer.co.kr/users/schedules?linkSeq=1&searchMode=1

-H 옵션을 통해 헤더에 key-value 값을 넣어주고 URL 뒤에 파라미터를 붙여 테스트를 진행하였다.
그리고 아래와 같은 결과가 출력 되었다.

Server Software:        nginx/1.18.0
Server Hostname:        api.testServer.co.kr
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /users/schedules?linkSeq=1
Document Length:        1066 bytes

Concurrency Level:      1000
Time taken for tests:   22.073 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Non-2xx responses:      10129
Total transferred:      16671050 bytes
HTML transferred:       10797514 bytes
Requests per second:    453.04 [#/sec] (mean)
Time per request:       2207.316 [ms] (mean)
Time per request:       2.207 [ms] (mean, across all concurrent requests)
Transfer rate:          737.56 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       12 1263 361.0   1287    2138
Processing:    32  868 502.7    774    3951
Waiting:        7  604 508.2    404    3869
Total:         44 2131 548.5   1984    5455

Percentage of the requests served within a certain time (ms)
  50%   1984
  66%   2028
  75%   2129
  80%   2246
  90%   3185
  95%   3234
  98%   3453
  99%   3621
 100%   5455 (longest request)

  • Requests per second : 초당 응답 수
  • Time per request : 요청당 응답시간
  • Transfer rate : 초당 전송량
  • Time taken for tests : 전체 테스트 소요시간
  • Document Length : 문서크기
  • Complete requests : 성공한 요청 수
  • Failed requests : 실패한 요청 수
profile
안녕하세요. 개발자입니다.

0개의 댓글