Apache Bench-출력 비교

이 장에서는 플래그가있는 출력과없는 출력을 비교합니다. 적절한 플래그를 사용하여 웹 애플리케이션의 성능을 향상시킬 수있는 방법을 살펴 보겠습니다. 그 전에, 우리는 당신의 애플리케이션이 단순하다면 어떻게 그 차이를 눈치 채지 못할 수 있는지 이해해야합니다. 플래그가 있고 플래그가없는 간단한 애플리케이션의 경우와 같습니다. 그런 다음 동일한 테스트를 수행합니다.https://www.apache.org/ URL, 차이점을 확인하십시오.

플래그없이 애플리케이션 테스트

이 섹션에서는 플래그없이 애플리케이션을 테스트하는 방법을 이해합니다.

$ ab -n 100 -c 10 http://127.0.0.1:8000/

산출

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient).....done


Server Software:        Rocket
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.244 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Keep-Alive requests:    0
Total transferred:      27700 bytes
HTML transferred:       6600 bytes
Requests per second:    2208.77 [#/sec] (mean)
Time per request:       4.527 [ms] (mean)
Time per request:       0.453 [ms] (mean, across all concurrent requests)
Transfer rate:          597.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.3      4       5

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      5
  80%      5
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

플래그로 애플리케이션 테스트

이 섹션에서는 플래그를 사용하여 애플리케이션을 테스트하는 방법을 이해합니다.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://127.0.0.1:8000/

산출

...
Requests per second:    2277.07 [#/sec] (mean)
Time per request:       4.392 [ms] (mean)
Time per request:       0.439 [ms] (mean, across all concurrent requests)
Transfer rate:          615.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.2      4       5

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      4
  80%      4
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

출력 통계간에 큰 차이가 없다는 것을 간단히 알 수 있습니다.

플래그없이 Apache 조직 웹 사이트 테스트

이제 플래그없이 Apache 조직 웹 사이트를 테스트하는 방법을 살펴 보겠습니다.

$ ab -n 100 -c 10 http://www.apache.org/

산출

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.apache.org (be patient).....done

Server Software:        Apache/2.4.7
Server Hostname:        www.apache.org
Server Port:            80

Document Path:          /
Document Length:        58433 bytes

Concurrency Level:      10
Time taken for tests:   1.498 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      5877500 bytes
HTML transferred:       5843300 bytes
Requests per second:    66.74 [#/sec] (mean)
Time per request:       149.840 [ms] (mean)
Time per request:       14.984 [ms] (mean, across all concurrent requests)
Transfer rate:          3830.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       12  110 295.2     12    1012
Processing:    37   38   0.5     38      39
Waiting:       12   13   0.3     13      15
Total:         49  147 295.4     50    1051

Percentage of the requests served within a certain time (ms)
  50%     50
  66%     50
  75%     50
  80%     50
  90%    816
  95%   1050
  98%   1051
  99%   1051
 100%   1051 (longest request)

플래그로 Apache 조직 웹 사이트 테스트

이제 플래그를 사용하여 Apache 조직 웹 사이트를 테스트 해 보겠습니다.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://www.apache.org/

산출

...
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.357 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    100
Total transferred:      1358510 bytes
HTML transferred:       1317700 bytes
Requests per second:    280.28 [#/sec] (mean)
Time per request:       35.678 [ms] (mean)
Time per request:       3.568 [ms] (mean, across all concurrent requests)
Transfer rate:          3718.41 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   3.7      0      12
Processing:    14   17  21.3     15     227
Waiting:       14   17  21.3     14     227
Total:         14   18  21.5     15     227

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     15
  80%     15
  90%     27
  95%     28
  98%     29
  99%    227
 100%    227 (longest request)

플래그를 사용하여 초당 요청이 어떻게 증가했는지 간단히 확인할 수 있습니다. 즉석의 경우 특히-H "Accept-Encoding: gzip,이 플래그는 Apache 서버가 gzipped 체재.

Apache Bench 결과 고려

Apache Bench 결과와 관련하여 몇 가지 중요한 사항을 고려해야합니다. 이를 통해 애플리케이션의 병목 현상을 제거하고 성능을 개선하기위한 전반적인 전략을 설계 할 수 있습니다.

초당 요청이 필요합니다. 이를 통해 웹 서버 설정이 얼마나 잘 작동하는지 알 수 있습니다. 숫자가 클수록 성능이 향상됩니다. 그런 다음 연결 시간 (ms)과 서비스 요청 비율이 나옵니다. 이러한 메트릭을 원하는 성능으로 변경하려면 웹 서버의 설정을 조정해야 할 수 있습니다.

Apache 또는 사용 된 웹 서버 오류 로그 또는 (일반) 로그에 오류가 있는지 확인하십시오. 부하가 증가함에 따라 상황이 질식하기 시작합니다. 메모리 문제가 발생하기 시작합니다. 많은 파이썬 스크립트는 동시성을 염두에두고 작성되지 않은 경우 충돌을 시작합니다.

웹 서버가 충돌 및 / 또는 시간 초과되는 임계 동시성 값이 무엇인지 알아 내야합니까? 일반적으로 이것은 상당히 높은 동시성 수준에서 발생합니다. 이 값이 낮 으면 문제가있는 것이므로이 설정을 더 낮게 / 높게 조정해야합니다.

결론

이 튜토리얼에서 우리는 Apache Bench를 사용하여 웹 사이트 또는 웹 애플리케이션을로드 테스트하는 방법을 배웠습니다. Apache Bench는 병목 현상을 줄이고 성능을 높이기 위해 웹 애플리케이션 서버 설정을 개선하는 방법을 결정하는 데 매우 유용한 도구가 될 수 있습니다. 이제 Apache Bench의 기본 사용법에 익숙해 졌으므로 다양한 시나리오에서 애플리케이션의 성능을 측정하기위한 새로운 테스트 계획을 작성하여 시작할 수 있습니다.