Разогрев высокопроизводительных Java-приложений - PullRequest
7 голосов
/ 11 февраля 2010

Я недавно узнал о сценариях, которые требуют прогрева приложения (с высокими требованиями к пропускной способности), прежде чем они начнут обслуживать реальные запросы. Логика заключалась в том, чтобы позволить JIT творить магию производительности!

Является ли это нормой для приложений Java или обычно это делается для приложений с большим объемом памяти?

Ответы [ 3 ]

12 голосов
/ 11 февраля 2010

Если вы говорите о веб-приложении / веб-сайте с высоким трафиком, то JIT - очень незначительная проблема. Самая большая проблема - это прогрев (заполнение) всех слоев кэша, которые вам понадобятся. E.g регионы ehcache, которые заполняются из спящего режима . Это связано с тем, что операции, связанные с вводом-выводом, на несколько порядков медленнее, чем все, что происходит внутри ЦП (то есть, если вы не вычисляете фракталы:)

5 голосов
/ 11 февраля 2010

Вопрос в том, когда вы захотите уйти с вашего пути , чтобы сделать это?

Если вы откроете веб-приложение, и оно НЕМЕДЛЕННО будет жить, тогда пока«подогревая» его, вы добавляете дополнительную нагрузку, что непродуктивно.Подобное верно при запуске настольного приложения.Нет никакого смысла в потеплении, если пользователь собирается немедленно начать использовать его.Или, что еще хуже, не позволяя пользователю взаимодействовать во время прогрева приложения.

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

4 голосов
/ 11 февраля 2010

В дополнение к ответу черувима я могу вспомнить еще несколько вопросов, требующих разминки:

  • Создание объектов (отложенная загрузка, одиночные загрузки и т. Д.);
  • Распределение кучи (если ваш Xms меньше, чем ваш Xmx).

Я полагаю, что ОС также настраивается на поведение приложения, поэтому на вызовы ОС также может повлиять период прогрева.

Большинство из перечисленного (заполнение кэша, инициализация объекта) не относятся к Java.

...