본문 바로가기

리눅스

Apache ab 명령어

반응형

Apache(http) ab 명령어

ab(ApacheBench)는 Apache HTTP 서버와 함께 제공되는 도구로 웹 서버의 성능을 테스트하고 벤치마킹하는 데 사용됩니다.

ab 명령어 기본 형식

ab [옵션] [URL]

[URL]은 벤치마킹하려는 서버의 URL입니다.

 

주요 옵션

  • -n: 총 요청 수를 지정합니다. 예: -n 1000은 1000개의 요청을 보냅니다.
  • -c: 동시 요청 수를 지정합니다. 예: -c 100은 100개의 요청을 동시에 보냅니다.
  • -t: 테스트 시간을 초 단위로 지정합니다. 예: -t 60은 60초 동안 테스트를 진행합니다. (-n과 함께 사용할 수 없습니다)
  • -k: HTTP Keep-Alive를 사용하여 요청 간에 연결을 유지합니다.
  • -H: 추가 HTTP 헤더를 지정합니다. 예: -H "Authorization: Basic dXNlcjpwYXNz"
  • -p: POST 데이터를 포함하는 파일을 지정하여 POST 요청을 보냅니다.
  • -T: -p 옵션과 함께 사용하여 POST 요청의 Content-Type을 지정합니다. 예: -T "application/x-www-form-urlencoded"
  • -w: HTML 형식으로 출력을 생성합니다.
  • -v: 디버깅 정보를 출력합니다. -v 2와 같이 사용하여 더 많은 정보를 확인할 수 있습니다.

사용 예시

1. 단순 테스트

  • 총 100개의 요청을 순차적으로 보냅니다.
ab -n 100 http://example.com/

2. 동시 요청 테스트

  • 10개의 동시 요청으로 1000개의 요청을 보냅니다.
ab -n 1000 -c 10 http://example.com/

3. Keep-Alive 옵션 사용

  • 50개의 동시 요청으로 1000개의 요청을 보내되 Keep-Alive를 사용합니다.
ab -n 1000 -c 50 -k http://example.com/

4. POST 요청 테스트

  • post_data.txt 파일에 있는 데이터를 POST 요청으로 보냅니다.
ab -n 100 -c 10 -p post_data.txt -T "application/x-www-form-urlencoded" http://example.com/

5. 지정된 시간 동안 테스트

  • 60초 동안 가능한 한 많은 요청을 보냅니다.
ab -t 60 http://example.com/

출력 해석

  • Server Software : 테스트 대상 서버의 소프트웨어 정보.
  • Server Hostname : 서버의 호스트 이름.
  • Server Port : 서버 포트 번호.
  • Document Path : 요청한 URL의 경로.
  • Document Length : 응답된 문서의 길이(바이트).
  • Concurrency Level : 동시 요청 수.
  • Time taken for tests : 모든 요청을 완료하는 데 걸린 시간(초).
  • Complete requests : 완료된 요청 수.
  • Failed requests : 실패한 요청 수.
  • Requests per second : 초당 처리된 요청 수.
  • Time per request : 각 요청당 소요된 평균 시간(밀리초).
  • Transfer rate : 초당 전송된 데이터 양(KB). 이 정보들을 통해 웹 서버의 처리 능력, 응답 시간, 안정성 등을 평가할 수 있습니다.
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make at a time
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds
    -b windowsize   Size of TCP send/receive buffer, in bytes
    -B address      Address to bind to when making outgoing connections
    -p postfile     File containing data to POST. Remember also to set -T
    -u putfile      File containing data to PUT. Remember also to set -T
    -T content-type Content-type header to use for POST/PUT data, eg.
                    'application/x-www-form-urlencoded'
                    Default is 'text/plain'
    -v verbosity    How much troubleshooting info to print
    -w              Print out results in HTML tables
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -q              Do not show progress when doing more than 150 requests
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -r              Don't exit on socket receive errors.
    -h              Display usage information (this message)
    -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
    -f protocol     Specify SSL/TLS protocol
                    (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

 

728x90
반응형