Linux WEB

ab 사용방법

2008.05.15 01:43

sylee 조회 수:26648

[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)