Мдк 0201 ЛР8 почти готовая
.docxЛабораторная работа №8. Нагрузочное тестирование web-сервера.
Основные теоретические сведения
Цель: с помощью систем нагрузочного тестирования определить производительность web-серверов Apache и Nginx, добиться отказа в обслуживании.
Ход работы
Рисунок 1 – История 1
Рисунок 2 – История 2
Рисунок 3 – Настройка nginx
Таблица 1 – Сравнение apache и nginx
|
|
Максимальное число запросов |
Запросы/сек |
Время, затрачиваемое на запрос, мс |
% успешных запросов |
Apache |
PHP |
100000 |
10000 |
47.569 |
100 |
|
HTML |
100000 |
8295 |
59.508 |
100 |
LB + Apache |
PHP |
100000 |
620 |
144.492 |
100 |
|
HTML |
100000 |
4765 |
209.846 |
100 |
Nginx |
PHP |
100000 |
13214 |
37.838 |
100 |
|
HTML |
100000 |
14134 |
35.373 |
100 |
LB + Nginx |
PHP |
100000 |
14418 |
69.355 |
100 |
|
HTML |
100000 |
13306 |
75.152 |
100 |
Вопросы к лабораторной работе
1. Назначение нагрузочного тестирования?
Нагрузочное тестирование выявляет критические проблемы производительности, которые не могут выявить другие тесты, что позволяет компаниям устранить проблемы до запуска программного обеспечения или внедрения обновлений.
2. Что такое нагрузка?
Это значение, показывающее потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков.
3. Как указать ab сделать нагрузку в 10000 запросов, 500 из которых будут направлены одновременно? Перестанет ли ваш сервер принимать входящие подключения?
ab -n 10000 -c 500 http://*ip адрес*.index.*индекс (html, php)*, машина продолжит принимать запросы, даже если установить еще больше запросов, но может перестать принимать их при увеличении одновременного принятия запросов (больше чем 10000)
4. Можно ли протестировать при помощи ab, httperf и Siege другие web-сервера? Назовите примеры.
5. Влияет ли использование скриптовых языков программирования (например, PHP) на производительность web-сервера? Объясните почему.
Да, влияет. Каждому запущенному с php процессу выделяются ресурсы процессора и ОЗУ, как и любой другой программе. Чем больше одновременно запущено таких процессов, тем больше нагрузка на сервер.
6. Для чего нужен балансировщик нагрузки?
Балансировщик нагрузки приложений направляет трафик для запросов на основе HTTP. Балансировщик сетевой нагрузки маршрутизирует трафик на основе IP-адресов. Они идеально подходят для балансировки запросов на основе протокола TCP и User Datagram Protocol (UDP).
7. Какие существуют методы балансировки нагрузки в nginx?
Способы балансировки, которые можно использовать в NGINX:
Round Robin.
Hash.
IP Hash.
Least Connections.
Random.
Least Time (только в платной версии NGINX).