Нагревание приложений Java с высокой пропускной способностью

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

Действительно ли это - норма для приложений Java, или это обычно делается для памяти, тяжелой (место) приложения?

7
задан Aayush Puri 11 February 2010 в 19:26
поделиться

3 ответа

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

12
ответ дан 6 December 2019 в 08:43
поделиться

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

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

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

5
ответ дан 6 December 2019 в 08:43
поделиться

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

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

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

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

4
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: