티스토리 뷰

Daylogs/Unix

ab 아파치 벤치마킹 툴

ohgyun 2013. 10. 13. 01:39


발생일: 2013.10.04

문제:
다음 ABC Talk 주제로 `node.js 시작하기`를 선정했다.
어떻게 소개하면 좋을까 하고 슬라이드쉐어를 서핑하다보니,
어떤 슬라이드에서 동시성 처리가 좋다며 `Apache``node.js`의 벤치마크 결과를 사용하는 걸 봤다.

헌데, 벤치마킹 방법으로 `ab`라는 명령을 사용하고 있더라.
음.. 난 처음보는 건데, 이건 뭘까~?


해결책:


아파치가 설치될 때 같이 설치되는 벤치마킹 도구이고,
웹서버의 성능 검사 도구로 사용한다.

유닉스에서 `ab` 명령으로 사용한다.


$ ab -n 10 -c 5 http://testserver.com/

-n 은 요청수를, -c 는 동시요청수를 나타낸다.


주요 옵션

-n requests 벤치마킹을 위한 요청수.
-c cuncurrency 동시에 수행할 요청 수. 사용자수라고 이해하면 된다.
-t timelimit 제한 시간 (ms 단위)
-v verbosity 로그레벨 (1~4까지 있으며 숫자가 클수록 자세한 로그를 보여준다)


결과 문서에서 주요하게 볼 값

Time taken for tests: 벤치마킹에 걸린 총 시간. 응답시간을 볼 수 있는 중요한 결과값이다.
Requests per second: 초당 응답 요청 수.
Time per request: 한 개의 요청에 응답한 평균 시간. ms 단위로, 각 요청에 대한 처리 시간을 볼 수 있는 중요한 결과값이다.


예: 기본 응답 속도 테스트

$ ab http://naver.com/


3번의 요청에 대한 응답 속도 테스트

$ ab -n 3 http://naver.com/


10번의 요청을 동시에 3개씩 보낸다.

$ ab -c 3 -n 10 http://naver.com/


# 주의
`-c 3 -n 10`는,
3명의 사용자가 각 10번의 요청을 보낸다는 것이 아니다.

모두 10번의 요청을 보내는데, '동시에 처리하는 요청'의 수를 3개로 유지한다는 의미이다.
크기가 3인 요청 풀이 있고, 10개의 요청을 순서대로 보낸다고 생각하면 된다.

또한, 동시요청수가 전체 요청수보다 클 수 없으며,
실제로 -c 에 할당한 값이 -n 에 할당한 값보다 크면 아래와 같은 오류가 발생한다.
Cannot use concurrency level greater than total number of requests 




# 참고

간단한 설명이 좋음

자세한 옵션 설명이 좋음

예제가 좋음


반응형
댓글
공지사항