Tomcat 6 готов к непрерывной интеграции или как заставить его работать? - PullRequest
13 голосов
/ 13 марта 2010

Я ищу подсказку, как подготовить tomcat CI или контейнер сервлетов / контейнер приложений, который часто переустанавливается, как это происходит при использовании hudson ci.

Я обнаружил, что Tomcat 6 неправильно удаляет веб-приложения, оставляя классы в jvm.

Например, я отслеживал tomcat 6 с помощью VisualVM: при запуске классов 2000, при развертывании приложения 3000 после повторного развертывания 4000 и повторного развертывания классов 5000 и т. Д., Что приводит к сбоям, утечкам памяти ...

Хорошо, надеюсь, у вас есть подсказка по tomcat и непрерывной интеграции или другим серверам приложений.

Ответы [ 3 ]

7 голосов
/ 14 марта 2010

Обновление : я провел несколько тестов с веб-приложением средней сложности, использующим Spring, Hibernate, GWT, C3P0 и HsqlDB.

Stock Tomcat 6.0.24 работает просто отлично, если вы используете клиентский компилятор. Он работает на десяти повторных развертываниях, тогда как серверный компилятор выходит из строя на четвертом. Я предлагаю вам попробовать с флагом -client.

Попытка отладки использования серверного компилятора была бесплодной, поскольку Eclipse MAT не показывал корни GC для загрузчиков классов, и все же они были сохранены. Часто упоминаемая ошибка, Раздувание PermHeap внутри и только на серверной виртуальной машине , по сообщениям, была исправлена ​​в Java 6, обновление 16, но мои тесты не сработали с Java 6, обновление 16.


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

Здесь есть две возможности:


Если вы действительно хотите отладить эту проблему и убедиться, что это ошибка Tomcat, вы можете анализатор памяти Eclipse . У них есть хорошее сообщение в блоге, объясняющее, как отладить проблемы PermGen .

1 голос
/ 14 марта 2010

Мне всегда нравится принимать решительные меры, чтобы при запуске

1 убедиться, что все чисто и полностью воспроизводимо, 1) kill tomcat

2) deleteэто с диска

3) разархивировать чистую версию

4) перезаписать ваши персональные измененные настроенные файлы

5) перезапустить tomcat

6) развернуть приложение

0 голосов
/ 30 марта 2010

Взгляните на Apache Cactus - это фреймворк для серверного тестирования внутри контейнера. Это работает в значительной степени с любым контейнером сервлета.

...