Зомби нити пожирают мой мозг (J2EE, Tomcat, Hibernate, Quartz) - PullRequest
9 голосов
/ 30 октября 2009

Это есть Hallowe'en в конце концов.

Вот проблема: я поддерживаю некоторый старый код J2EE, используя Quartz, в котором у меня заканчиваются потоки. jconsole говорит мне, что когда он становится грушевидным, ему не хватает 60K потоков, из которых около 100 (!!) на самом деле работают. Интуиция и некоторый поиск в Google (см. Также здесь ) позволяют предположить, что происходящее является чем-то (я держу пари, что Кварц) создает неуправляемые потоки, которые никогда не очищаются.

Несколько подвопросов:

  1. Это инструмент, который я могу легко использовать для отслеживания создания потоков, поэтому я могу быть уверен, что проблема действительно в Кварце?

  2. Большинство всего, что я нашел о подобных проблемах, ссылается на Weblogic; Это ложное руководство для Tomcat?

  3. У кого-нибудь есть известное решение?

Прошли годы с тех пор, как я сделал J2EE, поэтому я не слишком удивлюсь, если это то, что можно решить просто.

Обновление : Это явно увеличивает потоки без ограничений, см. Этот график из jconsole.

They're dead, Jim

Ответы [ 2 ]

4 голосов
/ 30 октября 2009
  • Попробуйте увеличить уровень ведения журнала org.quartz.simpl.SimpleThreadPool для отладки, чтобы получить больше информации.

  • Если это не сработает, попробуйте прослушивание журнала. Кварц имеет интерфейс JobListener, который указан в учебнике . Слушатель может помочь вам отслеживать выполнение задания. Может быть, работа просто не заканчивается и заходит в тупик.

  • Сконфигурируйте org.quartz.threadPool.threadCount, чтобы прекратить заканчиваться потоки.

обновление:

  • Кроме того, вы можете взять дамп потока и посмотреть статистику потока. visual vm имеет плагин под названием TDA, или вы можете использовать Анализатор дампа потока напрямую.

  • На всякий случай проверьте версию кварца, чтобы узнать, нет ли известной ошибки.

0 голосов
/ 30 октября 2009

Посмотрели ли вы jvisualvm - он дает больше информации.

Кроме того, получите трассировки стека, чтобы увидеть, что потоки на самом деле ждут.У вас может быть чувство ага прямо там.

...