Bench Apache - Сравнение результатов
В этой главе мы сравним выходные данные с флагами и без них. Давайте посмотрим, как использование соответствующих флагов может повысить производительность вашего веб-приложения. Перед этим нам нужно понять, как, если ваше приложение простое, вы можете не заметить разницы. Как и в случае с нашим простым приложением, с флагами и без флагов. Затем мы проведем тот же тест с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, deflate, потому что этот флаг указывает серверу Apache обслуживать запросы в gzipped формат.
Рассмотрение результатов Apache Bench
Когда дело доходит до результатов Apache Bench, необходимо учитывать несколько важных моментов. Это поможет нам разработать общую стратегию по устранению узких мест в нашем приложении и повышению его производительности.
Нам нужно запросов в секунду. Это дает нам представление о том, насколько хорошо работает наш веб-сервер; чем больше число, тем лучше производительность. Затем идет время подключения (мс) и процент обслуженных запросов. Возможно, вам придется изменить настройки вашего веб-сервера, чтобы изменить эти показатели до желаемой производительности.
Проверьте, есть ли ошибки в журналах ошибок Apache или используемого веб-сервера или (общих) журналах. По мере увеличения нагрузки все начнет задыхаться: начнут появляться проблемы с памятью. Многие скрипты Python начнут давать сбой, если они написаны без учета параллелизма.
Вам нужно выяснить, каково критическое значение параллелизма, выше которого ваш веб-сервер дает сбой и / или время ожидания? Обычно это должно происходить при достаточно высоком уровне параллелизма. Если это значение низкое, что-то не так, и вам нужно отрегулировать эти настройки ниже / выше.
Вывод
В этом руководстве мы узнали, как Apache Bench можно использовать для нагрузочного тестирования любого веб-сайта или веб-приложения. Apache Bench может быть очень ценным инструментом для определения того, как следует улучшить настройку сервера веб-приложений, чтобы уменьшить узкие места и повысить производительность. Теперь, когда вы знакомы с базовым использованием Apache Bench, вы можете начать с создания новых планов тестирования для измерения производительности ваших приложений в различных сценариях.