Zombiefäden essen mein Gehirn (J2EE, Tomcat, Hibernate, Quartz)

9

Es ist schließlich Hallowe'en.

Hier ist das Problem: Ich behalte etwas alten J2EE-Code mit Quartz, in dem mir die Threads ausgehen. jconsole sagt mir, dass es nur knapp 60K Threads gibt, wenn es birnenförmig ist, von denen etwa 100 (!!) tatsächlich laufen. Intuition und etwas Googeln (siehe auch hier ) legen nahe, dass etwas passiert ( Ich wette Quartz) erstellt nicht verwaltete Threads, die niemals aufgeräumt werden.

Mehrere Teilfragen:

  1. Gibt es da ein Tool, mit dem ich die Thread-Erstellung einfach verfolgen kann, damit ich sicher sein kann, dass das Problem wirklich Quarz ist?

  2. Das meiste, was ich über ähnliche Probleme gefunden habe, referenziert Weblogic; Ist das ein falscher Hinweis für Tomcat?

  3. Hat jemand eine bekannte Lösung?

Es ist Jahre her, dass ich J2EE gemacht habe, also wäre ich nicht überrascht, wenn das einfach gelöst werden kann.

Update : Es werden deutlich mehr Threads ohne Grenzen angezeigt, siehe dieses Diagramm von jconsole.

Sie sind tot, Jim http://i35.tinypic.com/33vnarn.png

    
Charlie Martin 30.10.2009, 16:21
quelle

2 Antworten

4
  • Versuchen Sie, den Protokolliergrad von org.quartz.simpl.SimpleThreadPool auf debug zu erhöhen, um weitere Informationen zu erhalten.

  • Wenn das nicht funktioniert, versuchen Sie einen Logging-Listener. Quartz hat eine JobListener-Schnittstelle, die in ihrem Tutorial angegeben ist. Ein Listener kann Ihnen bei der Verfolgung der Jobausführung helfen. Vielleicht enden die Jobs einfach nicht und werden blockiert.

  • Konfigurieren Sie org.quartz.threadPool.threadCount , damit keine Threads mehr ablaufen.

Aktualisierung:

  • Vielleicht möchten Sie auch einen Thread-Dump machen und die Thread-Statistiken sehen. visual vm hat ein Plugin namens TDA, oder Sie können Thread Dump Analyzer direkt.

  • Nur für den Fall, überprüfen Sie die Quarz-Version, um zu sehen, ob es keinen bekannten Fehler ist.

Marcelo Morales 30.10.2009, 16:41
quelle
0

Haben Sie sich mit jvisualvm angesehen - es gibt weitere Informationen.

Erhalten Sie auch Stack-Traces, um zu sehen, worauf die Threads tatsächlich warten. Vielleicht hast du ein Aha-Gefühl.

    
quelle