Рекомендации по поиску утечки памяти в веб-приложении, работающем в Apache Tomcat - PullRequest
4 голосов
/ 14 июня 2011

У меня есть веб-сервис Axis2, который только что упал на клиентском сайте, он выдает следующее исключение: java.lang.OutOfMemoryError: невозможно создать новый собственный поток

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

Ответы [ 3 ]

9 голосов
/ 14 июня 2011

Создайте дамп кучи и проанализируйте его с помощью Eclipse Memory Analyzer .

2 голосов
/ 14 июня 2011

Попробуйте VisualVM .

1 голос
/ 14 июня 2011

Существует несколько шагов, которые можно использовать для определения утечки памяти.

Начните с изменения параметров запуска веб-службы.Добавьте строку -XX:+HeapDumpOnOutOfMemoryError, которая будет захватывать дамп кучи всякий раз, когда jvm встречает исключение OOM.Вы можете использовать эту информацию, чтобы получить хорошее представление о том, какие объекты в памяти занимали всю доступную память.В ожидании репликации OOM вы можете посмотреть на 2-й набор параметров, которые нужно добавить к запуску, в следующем журнале активности GC -XX:+PrintGCDetails -verbose:gc -Xloggc:/log/path/gc.log.С помощью этих данных вы можете увидеть, происходит ли OOM постепенно или происходит быстро.

Другой путь - использовать такую ​​программу, как VisualVM, которую можно использовать для профилирования веб-службы.Это подключит к вашей работающей JVM (предпочтительно в среде разработки), а затем попытается провести стресс-тестирование, чтобы найти причину проблемы. Попробуйте JMeter, чтобы помочь с стресс-тестированием.VisualVM находится в папке JAVA_HOME / bin (версии 6 и выше)

. Это также может быть случай, когда речь идет не об утечке памяти, а о большей нагрузке на стороне клиента, чем ожидалось.Посмотрите на настройку параметров запуска, чтобы обеспечить больше памяти (-Xms и -Xmx)

Если ваш клиент не может сказать вам параметры, которые он передал до возникновения проблем, вам придется провести небольшое исследованиедо тех пор, пока вы не найдете больше информации.

Даниэль уже рассмотрел jmap в своем ответе, поэтому я не буду вдаваться в подробности

...