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

Допустим, веб-сайт электронной коммерции на основе Java EE работает хорошо, обеспечивая ожидаемое время отклика и пропускную способность. Веб-сайт претерпевает серьезные изменения пользовательского интерфейса, и ожидается, что он принесет в 3 раза больше трафика.

Как узнать, может ли прогнозируемый веб-трафик обрабатываться существующей средой?

Есть ли способ выяснить это с помощью некоторой эмпирической формулы без фактического нагрузочного тестирования системы, если у меня есть загрузка системы (ЦП, использование памяти), пропускная способность, время отклика существующей системы. (Цель состоит в том, чтобы определить, могут ли SLA быть выполнены на самой стадии проектирования)

2 ответа

Решение

Нет, формулы для этого нет, просто слишком много взаимозависимых факторов для этого. Единственный способ получить реалистичные числа - это эмпирические тесты. Если вы не можете сделать это, у вас есть только один вариант - перейти на аппаратную избыточность и сделать обоснованное предположение, что это будет примерно так:

  • Влияет ли новый интерфейс на использование процессора?
  • Рендеринг и перенос страницы занимает больше времени? Оцените увеличение параллелизма.
  • Больше трафика также означает больше данных? Если да, то как это влияет на производительность?
  • Существуют ли узкие места, которые могут привести к неожиданному увеличению параллелизма?
  • Как увеличение параллелизма влияет на использование памяти?
  • Как использование памяти влияет на кеш файловой системы, кеш базы данных, кеш JPA и т. Д.
  • Производительность ввода-вывода связана? А сколько свободных мощностей доступно?
  • Производительность процессора связана? А сколько свободных мощностей доступно?
  • Сколько у вас свободного места в памяти?

Я частично не согласен с предыдущим ответом. Несомненно, любое планирование мощностей предполагает создание модели с набором (потенциально опасных) допущений.

Тем не менее, имея хорошую историческую перспективу:

  • транзакционная нагрузка (например, веб-хиты в журналах Apache)

  • Загрузка процессора и памяти

Анализ производительности нагрузки может быть построен для определения "спроса на услуги" (грубо говоря, количества ресурсов, используемых для обработки одного запроса) с помощью аналитических статистических методов. Затем этот же параметр может быть введен в модели сети массового обслуживания для оценки ожидаемого времени отклика и пропускной способности (поведение которой может стать сильно нелинейным при высоких уровнях насыщения ресурса).

Несмотря на то, что только что сказал: - это не простая формула

  • Вы должны предположить, что эффект нового пользовательского интерфейса - генерация нагрузки в 3 раза и ничего более (тот же спрос на обслуживание для запроса, та же эффективность)

  • вы рискуете столкнуться с проблемами немодельных возможных узких мест (например, насыщенных пулов соединений, пропускной способности сети и т. д.), что является общей проблемой планирования емкости.

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

Другие вопросы по тегам