
В этой статье мы проведем нагрузочное тестирование нашего демо, расположенного по адресу marketplace.web-automation.ru
Что под капотом сервера, используется 1 машина:
На машине работает около 15-20 других сайтов с небольшой нагрузкой.
Используем инструмент Apache Jmeter для проверки сайта на способность выдерживать большую нагрузку.
Тесты проведем следующие:
Будем анализировать, как будет вести себя сайт на протяжении 10 минут при такой нагрузке.
Тестируемой страницей будет marketplace.web-automation.ru/catalog - каталог товаров.
Общее количество запросов 9271, по 15.4 запроса в секунду. Среднее время ответа составило 635мс, минимальное 133мс, а максимальное 7374мс.
Судя по среднему времени ответа, такая нагрузка не составила для нашего сервера никаких проблем. Увеличиваем “наплыв”.
При нагрузке в 50 пользователей средний отклик сервера составляет 3141мс, что неплохо. Отказов нет, прерываний нет.
В течение 7 минут, после набора необходимого количества, среднее время почти не изменилось, сервер такую нагрузку выдерживает без особых проблем.
Здесь снимем два скрина, первый при достижении 100 пользователей и при работе с такой нагрузкой на протяжении 5 минут.
Количество запросов 4411 с частотой 14.7 в секунду. На протяжении 5 минут, нагрузка планомерно увеличивалась до 100 пользователей.
Среднее время отклика 3168мс, нагрузка на сервер уже чувствуется, однако, отказов нет. Далее смотрим, как будет реагировать сервер следующие 5 минут
с нагрузкой в 100 пользователей.
После 5 минут прогрева среднее время отклика поднялось до 4150мс. Отказов нет, время отклика увеличилось не сильно, что показывает, что наш сайт
справляется с такой нагрузкой. Увеличиваем до 500 пользователей.
При достижении 500 пользователей одновременно среднее время отклика составляет 14227мс, отказов нет, но сайт работает медленно. Продолжаем тест.
В течение 5 минут время ответа значительно увеличилось, 19228мс является неприемлемым ожиданием. Отказов сервера нет, но система работает очень медленно,
здесь уже нужно применять меры оптимизации (увеличивать железо в первую очередь). Проведем последний тест в 1000 пользователей.
За 5 минут должно собраться 1000 пользователей, снимем на это время показатели.
Как видно по скрину, нагрузка в 1000 одновременных пользователей создает серьезное задание для нашей системы. Среднее время ответа составляет 13954мс,
понаблюдаем 5 минут как будет вести сервер при такой нагрузке.
За следующие 5 минут время отклика значительно увеличилось, более того, появились отказы, сервер не справляется с такой нагрузкой -
необходимо добавлять мощности серверу либо распределять нагрузку между различными серверами.
Исходя из проведенных тестов, мы выяснили, что пороговое (при котором среднее время ответа приемлемо для нас) значение пользователей, которые
одновременно запрашивают страницу каталога равно между 100 и 500. Учитывая, что тестируемый сервер имеет довольно скромные параметры
(3Гб RAM, CPU E5-2690 v2 @ 3.00GHz, к тому же на нем запущены еще ряд сайтов), результаты достаточно хорошие.
Для масштабирования необходимо реализовать распределение нагрузки на несколько серверов, либо увеличить мощность “железа” на сервере.
P.S. Также мы планируем провести аналогичные тесты на обычном Windows хостинге (например, на reg.ru Win0) и на более мощном сервере и зафиксировать результаты в виде аналогичной статьи.
Если вам интересует решение по товарной площадке, смотрите статью Как создать товарную площадку.