[ab 사용방법]
ab는 Apache Web server의 상태를 측정하는 툴이며 초당 Apache server가 얼마나 많은 요청을 처리할수 있는지를 측정할수 있다.
[옵션]
-k
HTTP KeepAlive (연결 지속성) 요소를 사용 가능 하게 한다. 이것은 하나의 HTTP session에서 여러 개의 요청을 처리할 수 있다.
기본값은 연결 지속성 기능을 사용하지 않는다.
-i
GET 방식 대신에 HTTP 'HEAD'를 사용한다. POST와 섞어서 사용할수 없다.
-n 요청수 (request)
측정을 하기 위한 요청수를 지정한다. 따로 지정하지 않는다면 하나의 요청만이 수행된다.
-t 시간제한
측정을 어느 정도까지 할 지 초단위로 지정한다. 따로 지정하지 않으면 측정 세션에 대해서 50000개의 요청을 자동으로 정의한다.
고정된 시간 동안 서버를 측정하기 위하여 사용한다. 기본적으로 시간을 제한하지는 않는다.
-c 동시접속수
동시에 요청을 처리할 수 있는 수량을 지정한다. 기본값으로는 한번에 하나의 요청만을 수행한다.
즉 동시 접속을 하지 않는다는 의미이다.
-p POST file
아파치 웹서버에 어떠한 HTTP POST 요청을 보내기 위한 data를 가진 파일을 지정한다.
-A Authorization username:password
서버로 신용증명을 하는 기본 인증을 지원한다. 사용자 이름과 패스워드는 하나의 ':'로 구분하고, uuencoded로 변환한 데이터를 보낸다. 문자열은 서버가 필요로 하든 안하든 상관없이 보내며, 401 인증을 보내는 것을 필요로 한다.
-p Proxy-Authorization username:password
프락시 서버로 신용증명을 하는 기본 인증을 지원한다.
사용자 이름과 패스워드는 하나의 ':'로 구분하고, uuencoded로 변환한 데이터를 보낸다. 문자열은 프락시가 필요로 하든 안하든 상관없이 보내며, 407 인증을 보내는 것을 필요로 한다.
-C Cookie name=value
요청에 'Cookie:' line을 추가한다. 이 인자는 'name=value'의 형태를 가진다. 이 옵션은 반복된다.
-H Header string
요청에 임의의 헤더를 추가한다. 이 인자는 유효한 헤더의 형태를 가지며, 보통 하나의 쌍으로 이루어진 필드 값을 콜론(:)으로 구분을 한다.
-T content-type
POST data에 대한 content-type header를 지정한다.
-v
출력 레벨을 지정한다. 4단계는 결과값 상단에 HTML 헤더를 출력하며, 3단계는 결과물 상단에 응답 코드(예를 들어 404, 200등)를 출력하며, 2단계는 경고와 정보 메세지를 출력한다.
-w
HTML table로 결과물을 출력한다. 기본 table은 2칼럼이며 흰색 바탕이다.
-x attributes
<table> 에 대한 속성을 지정한다. 속성은 <table 속성> 과 같이 들어간다.
-y attributes
<tr>에 대한 속성값을 지정한다.
-z attributes
<td>에 대한 속성값을 지정한다.
-V
버전 정보를 출력하고 프로그램을 종료한다.
-h
사용법에 대한 정보를 출력한다.
[사용예제]
# /usr/local/apache/bin/ab -n 100 -c 10 http://www.domain.com/
10 명의 유저가 동시에 http://www.domain.com/ 을 요청
각각의 시뮬레이트 유저는 요청을 10 번씩 하게 됩니다.
# /usr/local/apache/bin/ab -n 1500 -c 50 http://www.domain.com/
요청을 30 x 50 (50 명의 사용자가, 각각 30 번의 요청)
결과예)
Benchmarking www.domain.com (be patient).....done
Server Software: ---> 아파치 버전표시
Server Hostname: www.domain.com ---> 특정사이트의 도메인명
Server Port: 80 ---> 웹서비스 사용포트
Document Path: / ---> 초기문서가 존재하는 웹문서 root 위치
Document Length: 0 bytes ---> 초기문서의 용량크기(index.html)
Concurrency Level: 10
Time taken for tests: 0.013 seconds ---> 응답시간 (매우 중요한 결과값임)
Complete requests: 100 ---> 요구에 응답완료한 세션수
Failed requests: 100 ---> 요구에 응답실패한 세션수
(Connect: 100, Length: 0, Exceptions: 0)
Broken pipe errors: 0
Total transferred: 0 bytes ---> 총 전송바이트수
HTML transferred: 0 bytes ---> 총 전송한 html 바이트수
Requests per second: 7692.31 [#/sec] (mean) ---> 초당응답요구수
Time per request: 1.30 [ms] (mean) ---> 요구에 응답한 시간
Time per request: 0.13 [ms] (mean, across all concurrent requests)
Transfer rate: 0.00 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.4 1 3
Processing: 0 0 0.0 0 0
Waiting: 0 0 0.0 0 0
Total: 0 1 0.4 1 3
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 1
90% 1
95% 2
98% 2
99% 3
100% 3 (last request)