Мы запускаем Tomcat 6.0.35 на Windows 2008 Server.
Каждые несколько дней у него заканчивается память. Мы заметили в журналах, что сервер случайно переинициализируется.
Мы видим это в журнале tomcat.
[main] INFO org.apache.catalina.core.StandardService - Запуск службы Catalina
И каждый раз, когда он выходит из строя, мы видим это предупреждающее сообщение:
ОШИБКА org.apache.catalina.loader.WebappClassLoader. Веб-приложение [/ webconsole] создало ThreadLocal с ключом типа [org.apache.log4j.helpers.ThreadLocalMap] (значение [org.apache.log4j.helpers.ThreadLocalMap@38fc73ee ]) и значение типа [java.util.Hashtable] (значение [{}]), но не удалось удалить его при остановке веб-приложения. Это может привести к утечке памяти.
Мы решили, что это может быть проблема с ошибка log4j.
Однако более серьезный вопрос заключается в том, почему сервер повторно инициализируется? Мы проверили, наблюдаются ли какие-то изменения файлов, которые вызывают перезапуск, но их нет.
Буду признателен, если у кого-то есть указатели.
Это похоже на тип сообщения об ошибке, которое регистрируется, когда срабатывает обнаружение / предотвращение утечки памяти tomcat. В MemoryLeakProtection на странице Tomcat Wiki есть дополнительная информация об этом.
Вы можете остановить повторную инициализацию, отключив autoDeploy
в Host
элемент вашего server.xml
. Tomcat по умолчанию поставляется с autoDeploy
установлен в правда.