2012-04-11 8 views
0

Ich habe einen Ubuntu LAMJ Server, auf dem Tomcat6 läuft.Tomcat Friert nur eine Anwendung ein

Eine meiner JSP-Anwendungen friert alle paar Tage ein und ich habe Probleme herauszufinden, warum. Ich muss Tomcat neustarten, um die eine App wieder loszulegen, da sie sich nicht selbst zurückkegeln wird. Ich bekomme nichts in meinen eigenen Log4j Logs für diese App und kann auch nichts in Catalina.out sehen.

Diese Anwendung teilt eine Ressource javax.sql.DataSource mit einer anderen über ein Kontextelement in der Datei server.xml. Ich glaube nicht, dass dies die Ursache des Problems ist, aber ich kann es auch erwähnen.

Kann mir jemand in die richtige Richtung zeigen, um die Ursache dieses zeitweiligen Problems zu finden?

Vielen Dank im Voraus,

Christy

+0

Können Sie Thread Dumps nehmen? oder ist der ganze Prozess eingefroren? – Sean

+0

Hallo Sean. Es ist nur eine App, die einfriert. Alle anderen Apps führen eine Datei aus, während diese eingefroren ist. Wie würde ich einen Thread-Dump von diesem Prozess nehmen? –

+0

eine Antwort geschrieben – Sean

Antwort

0

einen Thread-Dump des laufenden Server Get Es gibt zwei Möglichkeiten

Verwenden VisualVM

in Ihrem% java_home%/bin-Ordner Es wird eine Datei namens jvisualvm geben. Führen Sie dies aus und verbinden Sie sich mit Ihrem Tomcat-Server. Klicken Sie auf die Registerkarte Threads und dann „Thread Dump“

manuell über die Befehlszeile

up öffnen Sie eine Befehlszeile ein und finden Sie die Prozess-ID für Ihren Kater

ps -ef | grep java 

Sobald Sie den Prozess zu identifizieren ID für die laufende Tomcat-Instanz,

kill -3 <pid> 

Ersetzen Sie hier die Prozess-ID. Dadurch wird der Thread-Dump an den Stdout Ihres Tomcat gesendet. Wahrscheinlich Catalina.out-Datei.

bearbeiten - Per Mark Kommentare unter:

Es ist normal, 3 Thread zu nehmen Dumps ~ 10s auseinander und sie vergleichen. Es macht es viel einfacher zu sehen, welche Themen ‚stecken‘ sind und welche sind


bewegen Sobald Sie den Thread-Dump Sie können es stecken Fäden analysieren. Eventuell sind keine Threads als Problem feststellbar, aber zumindest kann man sehen, was im Server passiert, um das Problem weiter zu analysieren.

+0

Vielen Dank Sean, das ist sicherlich ein Schritt in die richtige Richtung. Wie finde ich die Thread-ID für nur eine Anwendung? Ich muss derzeit den gesamten Tomcat neu starten, um neu zu starten, da ich nicht weiß, wie man nur eine App neu startet. –

+0

Wenn sie alle auf demselben Tomcat-Server laufen, teilen sie sich dieselbe Prozess-ID – Sean

+0

Es ist normal, 3 Thread-Dumps ~ 10s auseinander zu nehmen und sie zu vergleichen. Es macht es viel einfacher zu sehen, welche Threads "feststecken" und welche sich bewegen. –