미니옵빠의 code stubs

Apache Benchmarking 본문

Server/Apache

Apache Benchmarking

미니옵빠 2011. 9. 3. 18:13
간단히 이해하기 위해서

-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>의 속성으로 사용할 문자열.