JPA - Вызов хранимой процедуры происходит медленно при первом запуске после перезапуска сервера.Зачем? - PullRequest
1 голос
/ 08 августа 2011

У меня есть приложение, развернутое на Glassfish, которое использует JPA (Eclipselink 2.0) для вызова некоторых хранимых процедур.

Я проводил некоторое тестирование производительности и обнаружил, что: когда сервер Glassfish перезапускается, и я пытался вызвать какую-то хранимую процедуру, первый вызов всегда выполняется медленно (не имеет значения, какую хранимую процедуру я выбрал для вызова)).но все последующие звонки быстрые.Есть идеи, почему это происходит?

Я проверил монитор Glassfish, похоже, проблема с подключением отсутствует.время соединения составляет около 70 миллисекунд, но вызов хранимой процедуры занимает более 1000 миллисекунд.Все вызовы хранимых процедур подпоследовательности занимают менее 10 миллисекунд.

1 Ответ

0 голосов
/ 09 августа 2011

Является ли звонок в первый раз, когда вы получаете доступ к JPA?Если это так, то JPA инициализирует единицу сохраняемости при первом обращении, так что это может быть цена, которую вы видите.

В противном случае вы можете попробовать настроить EclipseLink Performance Profiler, чтобы увидеть, где тратится время запроса,или используйте профилировщик Java, такой как JProfiler.

В последнем выпуске EclipseLink имеется модуль сохранения состояния "eclipselink.deploy-on-startup", который вызывает инициализацию модуля сохранения при запуске сервера,вместо первого доступа.

...