Назад | Перейти на главную страницу

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

При запуске нагрузочных тестов для сервера приложений средние результаты для 1,25 одновременных пользователей следующие.

Я подсчитал 1,25 одновременных пользователей, взяв пиковый час посетителей (5 посетителей) в течение 15 минут (900 секунд), а затем разделив на 3600.

Средний результат:

Completed Requests: 2683
Requests Per Second: 134
Mean Latency: 14.8ms

Это на сервере с 1 ГБ ОЗУ и 1 виртуальным ЦП. Загрузка процессора не превышала 30%. Память казалась незатронутой.

Итак, что именно означает иметь результат 134 запроса в секунду? Я пытаюсь определить требования к серверу, которые мне потребуются для обработки X пользователей, и то, как это будет масштабироваться, но у меня возникают проблемы с поиском информации о корреляции между одновременными пользователями и запросами в секунду с точки зрения масштабируемости.

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

Ваши расчеты выглядят немного странно, возможно, ваше приложение очень экзотично, однако обычно 1 пользователь не выполняет 100+ запросов в секунду, более вероятно, что это будет что-то вроде 1 запроса в несколько секунд + X запросов на загрузку встроенных ресурсов (изображений , скрипты, стили, шрифты) и в конечном итоге AJAX Запросы. Проверять, выписываться Какая связь между пользователями и посещениями в секунду? статья для примера использования в реальной жизни.

Существует 2 основных типа тестирования производительности:

  1. Нагрузочное тестирование - когда вы помещаете свою систему в ожидаемый загрузить, т.е. 5 пользователей, и посмотреть, сможет ли он обеспечить достаточно низкое время отклика
  2. нагрузочное тестирование - когда вы пытаетесь определить критическую точку вашей системы или первую узкое место начав с 1 виртуального пользователя и постепенно увеличивая нагрузку до тех пор, пока время отклика не превысит допустимый порог или не начнут появляться ошибки (что бы ни случилось первым)

Итак, прежде всего убедитесь, что ваш нагрузочный тест на 100% соответствует площади сети, которую создает реальный пользователь, использующий настоящий браузер, с точки зрения печенье, заголовки, тайник, время обдумывания и т. д.

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

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

Эти два измерения не всегда связаны одинаковым образом. Вы должны оценить это для ваш веб-сайт: для одного веб-сайта может потребоваться 2 запроса на пользователя в день. Другой веб-сайт может потребовать 200+ запросов на пользователя в минуту.

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

Пример:

  • 25 одновременных пользователей в часы пик
  • 3 страницы, просматриваемые каждым пользователем за минуту
  • 2 запроса (1 HTML, 1 CSS) на каждую открытую страницу (верхняя граница, кеширование уменьшает фактическое количество)
  • 25 * 3 / мин * 2 запроса = 150 запросов в минуту

Мой сервер может заполнить около 150 запросов в секунду, поэтому я не ожидаю значительной задержки в 150 в минуту. Это 60-кратная разница, поэтому, когда я приближаюсь к 60-кратному моему текущему пику пользователя, мне придется ожидать увеличения времени загрузки или даже сбоев.

Не ожидайте, что такой расчет даст вам больше, чем очень примерное представление о том, какую базу пользователей вы сможете обслуживать одновременно:

  1. Некоторые запросы могут на много порядков увеличить нагрузку на ваши ограниченные ресурсы сервера, поэтому подсчет запросов не может полностью учесть фактическую нагрузку. При необходимости сравнивайте динамические (wsgi, fcgi) запросы отдельно от статического контента (css, images, js)
  2. Если вы производите расчет на основе реальных пользователей, вы отбрасываете фоновую нагрузку на ваш сервер со стороны Google / Shodan / Vulnerability Scanners / Botnets / .. - для небольших веб-сайтов это может составлять значительную долю нагрузки на ваш сервер.