У меня проблема, и я не знаю, как получить некоторые подсказки о том, что может быть не так. Я развернул свое веб-приложение (весна - спящий режим - MySQL), и в течение нескольких секунд после его запуска оно работает нормально. Я могу листать страницы. Затем все запросы получают стек, и ничего не загружается. Все страницы просто висят. Ошибка PageNotFound 404 появляется, когда я ввожу не ту страницу.
Вопрос в том, что у меня есть tomcat7.exe в активных процессах с небольшим увеличением памяти с течением времени. Так что подозреваю утечку памяти. Как мне получить кучу памяти от tomcat? И какой анализатор кучи лучше всего подходит для обнаружения утечки?
PS: Оказалось, что maxPoolSize был всего 15 в ComboPooledDataSource. Увеличил до 200 и теперь все работает нормально.
Ответ 1 · рейтинг 1 · Danny Thomas
Здесь нужен дамп потока. Это даст вам необходимое понимание того, что делают потоки процессора Tomcat (TP), а также статистику кучи (при условии, что недавняя JVM Sun). Если вы не наблюдаете высокую загрузку ЦП в тандеме с увеличением памяти до максимального настроенного размера кучи, утечка памяти, скорее всего, не является вашей проблемой.
Скорее всего, это условие, блокирующее потоки и препятствующее завершению запросов, возможно, общий ресурс, такой как пул соединений и т. д. Использование приложения для анализа дампа потока поможет, если вы не знакомы с чтением вывода дампа потока. Вы также можете рассмотреть возможность включения приложения менеджера Tomcat, оно предоставляет некоторую полезную информацию о состоянии (во многом похожую на статус сервера Apache) и использует jconsole для мониторинга JVM через JMX.