Планирование мощности определяет, сможет ли система справиться с нагрузкой.
Допустим, веб-сайт электронной коммерции на основе Java EE работает хорошо, обеспечивая ожидаемое время отклика и пропускную способность. Веб-сайт претерпевает серьезные изменения пользовательского интерфейса, и ожидается, что он принесет в 3 раза больше трафика.
Как узнать, может ли прогнозируемый веб-трафик обрабатываться существующей средой?
Есть ли способ выяснить это с помощью некоторой эмпирической формулы без фактического нагрузочного тестирования системы, если у меня есть загрузка системы (ЦП, использование памяти), пропускная способность, время отклика существующей системы. (Цель состоит в том, чтобы определить, могут ли SLA быть выполнены на самой стадии проектирования)
2 ответа
Нет, формулы для этого нет, просто слишком много взаимозависимых факторов для этого. Единственный способ получить реалистичные числа - это эмпирические тесты. Если вы не можете сделать это, у вас есть только один вариант - перейти на аппаратную избыточность и сделать обоснованное предположение, что это будет примерно так:
- Влияет ли новый интерфейс на использование процессора?
- Рендеринг и перенос страницы занимает больше времени? Оцените увеличение параллелизма.
- Больше трафика также означает больше данных? Если да, то как это влияет на производительность?
- Существуют ли узкие места, которые могут привести к неожиданному увеличению параллелизма?
- Как увеличение параллелизма влияет на использование памяти?
- Как использование памяти влияет на кеш файловой системы, кеш базы данных, кеш JPA и т. Д.
- Производительность ввода-вывода связана? А сколько свободных мощностей доступно?
- Производительность процессора связана? А сколько свободных мощностей доступно?
- Сколько у вас свободного места в памяти?
Я частично не согласен с предыдущим ответом. Несомненно, любое планирование мощностей предполагает создание модели с набором (потенциально опасных) допущений.
Тем не менее, имея хорошую историческую перспективу:
транзакционная нагрузка (например, веб-хиты в журналах Apache)
Загрузка процессора и памяти
Анализ производительности нагрузки может быть построен для определения "спроса на услуги" (грубо говоря, количества ресурсов, используемых для обработки одного запроса) с помощью аналитических статистических методов. Затем этот же параметр может быть введен в модели сети массового обслуживания для оценки ожидаемого времени отклика и пропускной способности (поведение которой может стать сильно нелинейным при высоких уровнях насыщения ресурса).
Несмотря на то, что только что сказал: - это не простая формула
Вы должны предположить, что эффект нового пользовательского интерфейса - генерация нагрузки в 3 раза и ничего более (тот же спрос на обслуживание для запроса, та же эффективность)
вы рискуете столкнуться с проблемами немодельных возможных узких мест (например, насыщенных пулов соединений, пропускной способности сети и т. д.), что является общей проблемой планирования емкости.
Тестирование является единственным безопасным вариантом, к сожалению, слишком часто этот вариант недоступен.