Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4 > Programs

# ab - 아파치 웹서버 성능검사 도구

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

`ab`는 아파치 하이퍼텍스트 전송 프로토콜 (HTTP) 서버의 성능을 검사하는(benchmarking) 도구이다. 현재 아파치가 어떻게 동작하는지 알려준다. 특히 아파치가 현재 초당 몇개의 요청을 서비스하는지 알려준다.

### 참고

- httpd

## 개요

`ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path`

## 옵션

`-A auth-username:password`
  서버에게 BASIC Authentication 정보를 제공한다. `:`으로 구분한 사용자명과 암호를 base64 인코딩하여 전송한다. 서버가 정보를 요구하는지 (예를 들어, 401 인증 필요를 보내는지) 관계없이 문자열을 전송한다.
`-c concurrency`
  동시에 요청하는 요청수. 기본적으로 한번에 한 요청만을 보낸다.
`-C cookie-name=value`
  요청에 `Cookie:` 헤더를 추가한다. 아규먼트는 보통 `name=value`와 같은 쌍이다. 이 옵션은 여러번 사용할 수 있다.
`-d`
  "percentage served within XX [ms] table"을 출력하지 않는다. (호환성을 위해).
`-e csv-file`
  요청을 처리하는데 걸린 (밀리초 단위) 시간들의 (1%에서 100%) 누적백분율을 쉼표로 구분한 형식(CSV)으로 출력한다. 결과를 이미 '정리'하였기때문에 'gnuplot' 파일보다 보통 더 유용하다.
`-g gnuplot-file`
  측정한 모든 값을 'gnuplot' 혹은 TSV (Tab separate values, 탭으로 구분한 값) 파일에 기록한다. Gnuplot, IDL, Mathematica, Igor, 심지어 Excel 같은 프로그램에서도 이런 파일을 쉽게 읽을 수 있다. 파일의 첫번째 줄에 항목이름이 나온다.
`-h`
  사용법을 출력한다.
`-H custom-header`
  요청에 헤더를 추가한다. 아규먼트는 보통 콜론으로 구분한 쌍인 (예를 들어, `"Accept-Encoding: zip/zop;8bit"`) 유효한 헤더줄이다.
`-i`
  `GET` 대신 `HEAD` 요청을 한다.
`-k`
  HTTP KeepAlive 기능을 사용한다. 예를 들어, 한 HTTP 세션에서 여러 요청을 한다. 기본적으로 KeepAlive를 사용하지 않는다.
`-n requests`
  성능을 검사하기위해 보내는 요청수. 기본값으로 요청을 한번만 보내기때문에 일반적인 성능검사 결과를 얻을 수 없다.
`-p POST-file`
  POST 자료 파일.
`-P proxy-auth-username:password`
  프록시를 통해 BASIC Authentication 정보를 제공한다. `:`로 구분한 사용자명과 암호를 base64 인코딩하여 전송한다. 프록시가 정보를 요구하는지 (예를 들어, 401 인증 필요를 보내는지) 관계없이 문자열을 전송한다.
`-q`
  150개 이상 요청을 보낼때 `ab`는 10% 혹은 매 100 요청당 `표준오류`에 진행상황을 출력한다. `-q` 옵션은 이 문구를 출력하지 않는다.
`-s`
  기능을 추가하여 컴파일하였다면 (`ab -h`로 확인할 수 있다) `http` 프로토콜 대신 SSL을 사용한 `https` 프로토콜을 사용한다. 이 기능은 실험적이고 매우 기초적이다. 아마도 사용을 꺼려할 것이다.
`-S`
  중간값과 표준편차를 출력하지 않고, 평균과 중간값의 차이가 표준편차보다 크더라도 경고/오류를 출력하지 않는다. 최소/평균/최대 값을 출력한다. (호환성을 위해).
`-t timelimit`
  성능을 검사하는 최대 초단위 시간. 내부적으로 `-n 50000`을 가정한다. 정해진 시간동안 서버 성능을 검사할때 사용한다. 기본적으로 시간제한 없이 검사한다.
`-T content-type`
  POST 자료의 Content-type 헤더.
`-v verbosity`
  출력의 자세함 수준을 지정한다. `4` 이상이면 헤더에 대한 정보를, `3` 이상이면 (404, 202, 등) 응답코드를, `2` 이상이면 경고(warning)와 정보(info)를 출력한다.
`-V`
  버전을 출력하고 종료한다.
`-w`
  결과를 HTML 표로 출력한다. 기본적으로 표를 흰 배경에 두 열로 작성한다.
`-x <table>-attributes`
  `<table>`의 속성으로 사용할 문자열. 속성을 `<table 여기에 >` 추가한다.
`-X proxy[:port]`
  프록시 서버를 사용하여 요청한다.
`-y <tr>-attributes`
  `<tr>`의 속성으로 사용할 문자열.
`-z <td>-attributes`
  `<td>`의 속성으로 사용할 문자열.

## 버그

정적으로 길이가 고정된 버퍼를 많이 사용한다. 명령행 아규먼트, 서버의 응답 헤더, 다른 외부 입력들을 같이 읽어들이면서 문제가 발생할 수 있다.

이 프로그램은 HTTP/1.x를 완전히 구현하지 않는다; 단지 '기대하는' 형식의 응답만을 받는다. `strstr(3)`을 매우 많이 사용기때문에 속도가 문제가 될 수 있다; 즉, 서버 성능보다는 `ab` 성능을 측정하게 될 수도 있다.