Tomcat показывает эту ошибку "Это очень вероятно, чтобы создать утечку памяти". Как решить эту проблему?
Я создал веб-приложение в Apache Cocoon. Этот веб-сайт работает правильно, но через каждые 3-4 дня он перестает отвечать. Он не работает до тех пор, пока мы не перезапустим службу tomcat. В файле catalina.2011-05-09.log он показывает следующую ошибку: -
"9 мая 2011 г. 3:17:34 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: веб-приложение [/webresources] все еще обрабатывает запрос, который еще не завершен. Это, скорее всего, приведет к утечке памяти. Вы можете контролировать время, отведенное на завершение запросов, используя атрибут unloadDelay стандартной реализации Context."
Я не смог понять причину этой проблемы. Может кто-нибудь подсказать мне, как решить эту проблему?
2 ответа
Вы используете библиотеку, которая запускает один или несколько потоков и неправильно отключает их или освобождает другие ресурсы, захваченные потоком. Это часто происходит с такими вещами, как HTTP-компоненты Apache (я получаю эту ошибку с Http-компонентами) и всем, что использует отдельные потоки внутри. Какие библиотеки вы используете в своем приложении Cocoon?
Это говорит вам о проблеме:
[...] is still processing a request that has yet to finish
Вам нужно выяснить, на что направлен этот запрос. Один простой способ - установить что-то вроде PsiProbe.
Кроме того, неплохо бы перезапускать Tomcat каждую ночь. Это может помочь облегчить подобные проблемы, пока вы не найдете основную причину.