반응형
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
반응형
'리눅스' 카테고리의 다른 글
병렬 압축 - parallel compression (0) | 2019.06.20 |
---|---|
[리눅스] Let's Encrypt(certbot) SSL 인증서 발급 (0) | 2019.06.11 |
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory (0) | 2018.10.02 |
[리눅스] RVM ruby install (0) | 2018.07.19 |
[리눅스] syslog(rsyslog)로 로그시스템 구성 (0) | 2018.06.27 |