Военное развертывание на Tomcat занимает возраст

У меня есть приложение Grails, построенное для военного файла (~ 30 Мб). Когда я пытаюсь развернуть файл войны на Tomcat 6 через диспетчер приложений, он занимает более 10 минут для развертывания или зависает бесконечно. Когда он зависает, я могу перезапустить Tomcat, и приложение обычно развертывается, однако иногда мне приходится повторять этот процесс. Я также заметил, что во время развертывания процесс Java высвобождает процессор, а ОЗУ составляет ~ 10-15%.

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

Ответ 1

Я загружаю WAR в мой домашний каталог, cd в /usr/local/tomcat, затем запускаю следующие команды:

bin/shutdown.sh
rm webapps/ROOT.war
rm -rf webapps/ROOT
cp ~/ROOT.war webapps
bin/startup.sh

Ответ 2

Как уже отмечалось, я бы скопировал войну в папку webapps и позволю tomcat выполнить развертывание, а также ускорит экономию вашего времени.

Оба Tomcat и Jetty будут поддерживать горячее развертывание. Они просто контролируют каталог развертывания для изменений, поэтому вы можете просто скопировать файл .war в этот каталог, а сервер будет разворачивать/перераспределять.

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

Ответ 3

Не используйте диспетчер приложений. Мой способ - загрузить его где-нибудь из каталога webapps, а затем скопировать в каталог webapps. Принимает гораздо меньше времени.

Ответ 4

Определенно проверяйте журналы Tomcat для любых ошибок/предупреждений.

У вас, вероятно, есть некоторая дорогая/чувствительная логика кода в одном из ServletContextListener s. Они обычно инициализируются во время запуска. Если это так, я бы отлаживал/прорабатывал его для любых проблем/утечек производительности.

Ответ 5

Не всегда у вас есть достаточные права доступа для ручной установки файлов в папку webapps - вы должны использовать развертывание файла Tomcat Application Manager для .war и должны заставить его работать.

Для меня было распространено, что процесс загрузки файла .war на сервер не может быть завершен; он застревает где-то посередине, и файл только частично загружается на сервер, независимо от того, сколько раз я повторяю. В таких ситуациях я счел целесообразным попробовать другой браузер. Например, я обнаружил, что застрял в Google Chrome, но как только я переключился на недавно запущенный браузер Firefox, все получилось.