간단히 이해하기 위해서
-c 는 동시 유저수
-n 은 Total 요청수
-v 는 출력 정보 (오류 원인 확인을 위해) 보통 -v2 로 사용한다.
-c5 -n100 은 총 요청이 100번, 1명의 사용자가 20번씩 요청하는 것으로 이해하면 된다.
그리고
Complete requests: 3
Failed requests: 2
(Connect: 0, Receive: 0, Length: 2, Exceptions: 0)
와 같이 모두 Length 타입으로 Failed requests 가 나는 경우, 이건 정상이라고 보면 된다.
동적인 페이지는 Length가 모두 다를 것이기 때문에 그런 것임. static한 페이지만 호출한다고 하면, Failed 가 없는게 맞음.
Source: http://alwaysthecritic.typepad.com/atc/2009/04/apache-bench-notes.html
Even though it's simple, there are some important gotchas worth knowing
about:
- Remember to put the URL in single quotes if it contains characters that
would otherwise be interpreted by the shell. This is often the case for any URL
with a query string, as the & characters will mess things up
otherwise.
- If using a base URL for a site (just host name), you must use a
trailing slash. http://foo.com doesn't work, but http://foo.com/ does
work.
- Quite often you may see in the statistics "Failed requests: 5" or
similar, followed by a list of the types of failure: "(Connect: 0, Receive: 0,
Length: 5, Exceptions: 0)". If the only type of failure that actually occurred
is 'Length' then don't be alarmed. This simply means that each request (for the
same URL) returned a different length response, which ab regards as suspicious.
However it's perfectly normal for dynamic webpages, especially if they include
the time or other very dynamic data on the page.
- I find on one of my machines that it just doesn't like localhost as a
hostname, so I have to use 127.0.0.1 instead. I have no idea why, as localhost
works fine in other contexts on the same
machine.
-----------------------------------------------------------------------------------------
http://blog.naver.com/jacktwo?Redirect=Log&logNo=100066588932
http://www.cyworld.com/rhr0916/7701663
웹 개발 환경에서의 소프트웨어 테스트 : http://blog.naver.com/hyoguri81?Redirect=Log&logNo=150113630113
ab는 응답속도를 비교 할때 사용한다. ab를 이용해 mpm 2가지 방식의 RPS를 확인하려고
한다.
아래는 옵션이다.
-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
요청을 한다. GET 방식 대신에 HTTP 'HEAD'를 사용한다.
POST와 섞어서 사용할수 없다.
-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>
의 속성으로 사용할 문자열.