연결이 끊어지거나 시간 초과되지 않고 웹 서버(Apache) 설정이 처리할 수 있는 요청 수를 쉽게 테스트할 수 있는 방법은 무엇입니까?
간단한 bash 스크립트가 있습니까? 아니면 복잡한 스트레스 테스트 도구를 사용해야 합니까?
답변1
ab
테스트를 위해 패키지에 포함된 소프트웨어를 사용할 수 있습니다 apache2-utils
. 예:
ab -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://mysite.mydomain.com/
-r
: 소켓 오류로 인한 종료를 방지합니다.-n
: 수행할 요청 수입니다.-c
: 동시에 실행되는 여러 요청의 수입니다.-k
: HTTP KeepAlive를 활성화합니다. 이는 Http 세션당 여러 요청을 수행한다는 의미입니다.-H
: 사용자 정의 헤더. 이는 사이트 구성 방식에 따라 크게 달라집니다.
다음은 인덱스 페이지(php)만 있는 간단한 사이트에서 수행한 테스트 결과입니다.
# ab -r -n 200 -c 20 -k -H "Accept-Encoding: gzip, deflate" http://intranet.example.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking intranet.example.com (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests
Server Software: Apache/2.2.15
Server Hostname: intranet.example.com
Server Port: 80
Document Path: /
Document Length: 10276 bytes
Concurrency Level: 20
Time taken for tests: 38.344 seconds
Complete requests: 200
Failed requests: 0
Write errors: 0
Keep-Alive requests: 0
Total transferred: 2132800 bytes
HTML transferred: 2055200 bytes
Requests per second: 5.22 [#/sec] (mean)
Time per request: 3834.421 [ms] (mean)
Time per request: 191.721 [ms] (mean, across all concurrent requests)
Transfer rate: 54.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 2869 3813 383.1 3649 5205
Waiting: 2868 3781 380.4 3613 5161
Total: 2869 3814 383.1 3650 5205
Percentage of the requests served within a certain time (ms)
50% 3650
66% 3763
75% 3971
80% 4318
90% 4451
95% 4530
98% 4634
99% 5093
100% 5205 (longest request)
그러나 httpd 서비스에 과부하가 걸리지 않았는지 확인하고 서버에 더 큰 영향을 미치도록 모든 매개변수를 늘리려면 테스트 사이에 약간의 시간을 투자해야 합니다. 내가 아는 한, 이 출력을 평가하고 동적으로 측정된 매개변수의 성능을 향상시킬 수 있는 도구는 없습니다.
링크:
- ab 맨페이지- Apache HTTP 서버 벤치마킹 도구