Почему стоит использовать тесты
Когда разработка веб-сайта заканчивается, и он переходит из среды разработки в публичный доступ, реальные посетители могут создать значительную нагрузку на сервер, вследствие чего производительность и поведение веб-сайта могут отличаться от ожидаемых. Чтобы спрогнозировать поведение веб-сайта под нагрузкой, необходимо смоделировать нагрузку на тестовом сервере.
Цели тестирования
К наиболее важным параметрам облачного сервера, влияющим на поведение вебсайта можно отнести:
- Латентность - время, которое проходит от запроса пользователя до первого ответа сервера;
- Общая производительность сервера - количество одновременных запросов, которые сервер может обработать. В случае отсутствия резерва мощностей запросы пользователей к сайту будут помещаться в очередь или даже вообще не будут обработаны;
- Стабильность работы - количество запросов, обработанных с приемлемым уровнем качества, так называемый перцентиль. Например, фраза "сайт отвечает за 20 миллисекунд с 90м перцентилем (отличное качество) означает, что 90% забросов обрабатывается за 20мс или менее.
Перед запуском тестов
Перед запуском собственно тестов стоит убедиться, что сервер в принципе имеет достаточное количество системных ресурсов для обработки всех запросов. Наиболее часто используемыми "метриками" являются доступная оперативная память и загрузка центрального процессора. Для проверки доступной оперативной памяти вы можете использовать системную утилиту free. Просто запустите команду:
В большинстве случаев свободными должны оставаться не менее 25% оперативной памяти, файл или раздел подкачки не должны использоваться вовсе.
Ситуацию с загруженностью процессора прояснит другая встроенная утилита — top. Иллюстрация проверки:
Отображаемый индекс загрузки процессора не должен превышать количество ядер вашего процессора. Например. если средняя загрузка 8-ядерного процессора превышает 8,00 - у вас проблемы.
Имитация загрузки
Для имитации наплыва реальных посетителей есть несколько инструментов:
Инструмент ab позволяет смоделировать множество одновременных подключений к веб-серверу. Использование достаточно простое:
Утилита siege очень похожа по смыслу на предыдущую. Устанавливается с помощью пакетного менеджера:
Использовать также просто, однострочная команда:
Утилита locust имеет веб-интерфейс и работает на Python. Устанавливается так:
После установки утилиты скачайте предварительно подготовленный скрипт, замените в нем имя сайта на свое и запустите:
После этого можно открыть интерфейс теста в браузере. Адрес - http://<IP_ВАШЕГО_СЕРВЕРА>:8089
Итоги
В этой статье описано зачем тестировать веб-сайт перед публичным размещением, а также приведены примеры утилит, позволяющих провести такую проверку.