news
Serverspace запустил услугу Managed Kubernetes
VB
Vyacheslav Breus
15 августа 2022
Обновлено 2 сентября 2022

Нагрузочное тестирование веб-сервера

Ubuntu

Почему стоит использовать тесты

Когда разработка веб-сайта заканчивается, и он переходит из среды разработки в публичный доступ, реальные посетители могут создать значительную нагрузку на сервер, вследствие чего производительность и поведение веб-сайта могут отличаться от ожидаемых. Чтобы спрогнозировать поведение веб-сайта под нагрузкой, необходимо смоделировать нагрузку на тестовом сервере.

Цели тестирования

К наиболее важным параметрам облачного сервера, влияющим на поведение вебсайта можно отнести:

  • Латентность - время, которое проходит от запроса пользователя до первого ответа сервера;
  • Общая производительность сервера - количество одновременных запросов, которые сервер может обработать. В случае отсутствия резерва мощностей запросы пользователей к сайту будут помещаться в очередь или даже вообще не будут обработаны;
  • Стабильность работы - количество запросов, обработанных с приемлемым уровнем качества, так называемый перцентиль. Например, фраза "сайт отвечает за 20 миллисекунд с 90м перцентилем (отличное качество) означает, что 90% забросов обрабатывается за 20мс или менее.

Перед запуском тестов

Перед запуском собственно тестов стоит убедиться, что сервер в принципе имеет достаточное количество системных ресурсов для обработки всех запросов. Наиболее часто используемыми "метриками" являются доступная оперативная память и загрузка центрального процессора. Для проверки доступной оперативной памяти вы можете использовать системную утилиту free. Просто запустите команду:

free -m

Результат выполнения команды free

В большинстве случаев свободными должны оставаться не менее 25% оперативной памяти, файл или раздел подкачки не должны использоваться вовсе.

Ситуацию с загруженностью процессора прояснит другая встроенная утилита top. Иллюстрация проверки:

top

Результат выполнения команды top

Отображаемый индекс загрузки процессора не должен превышать количество ядер вашего процессора. Например. если средняя загрузка 8-ядерного процессора превышает 8,00 - у вас проблемы.

Имитация загрузки

Для имитации наплыва реальных посетителей есть несколько инструментов:

Инструмент ab позволяет смоделировать множество одновременных подключений к веб-серверу. Использование достаточно простое:

ab -c <КОЛИЧЕСТВО_ОДНОВРЕМЕННЫХ_ЗАПРОСОВ> -n <ОБЩЕЕ_КОЛИЧЕСТВО_ЗАПРОСОВ> <АДРЕС_САЙТА>

Утилита siege очень похожа по смыслу на предыдущую. Устанавливается с помощью пакетного менеджера:

apt install siege

Использовать также просто, однострочная команда:

siege -t <ВРЕМЯ ТЕСТИРОВАНИЯ> -c <КОЛИЧЕСТВО_ОДНОВРЕМЕННЫХ_ЗАПРОСОВ> <АДРЕС_САЙТА>

Утилита locust имеет веб-интерфейс и работает на Python. Устанавливается так:

pip3 install locust

После установки утилиты скачайте предварительно подготовленный скрипт, замените в нем имя сайта на свое и запустите:

wget https://raw.githubusercontent.com/locustio/locust/master/examples/browse_docs_test.py
sed 's|https://docs.locust.io/en/latest|<ВАШ_САЙТ>|g' browse_docs_test.py
locust -f browse_docs_test.py

После этого можно открыть интерфейс теста в браузере. Адрес - http://<IP_ВАШЕГО_СЕРВЕРА>:8089

Итоги

В этой статье описано зачем тестировать веб-сайт перед публичным размещением, а также приведены примеры утилит, позволяющих провести такую проверку.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 2
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300