Tomcat gestoppt, ohne ein Protokoll oder einen Stapel
Wir haben Probleme mit Tomcat 5.5 die Haltestellen in der Nacht, die auf unsere Produktion-Server (Linux CentOS 4.8), und wir haben keine Ahnung, warum es Stoppt...
Es gibt keine Tomcat-log-in catalina.out oder jede Anwendung protokollieren.
Wir haben versucht, verschiedene Dinge zu finden, warum der server Stoppt:
- Tomcat konfigurieren zu können, generieren Sie einen core dump
- instrument
System.exit()
Methode mit javassist zu finden, wenn die Methode aufgerufen wurde - fügen Sie einen shutdown-hook um die JVM (mit
Runtime.getRuntime().addShutdownHook()
)
Keiner von Ihnen arbeitete, haben wir keinen core-dump, die Exit-Methode und der shutdown-hook nicht aufgerufen werden.
Meine Schlussfolgerungen sind:
- Die VM nicht korrekt beenden, aber Absturz ohne anmelden.
Jede Idee oder anmelden, um Lesen zu finden, warum Tomcat Stoppt?
InformationsquelleAutor der Frage Remi | 2012-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
1) Stellen Sie sicher, Sie wissen, wo stderr umgeleitet und prüfen, ob alles bekam hier gedruckt.
2) Überprüfen Sie die Speicher-Grenzen auf Tomcat und wie viel freien Speicher hat das system. Überprüfen Sie den Linux-system-logs unter /var/log zu sehen, wenn etwas verdächtiges passiert ist während der Zeit. Zum Beispiel, kernel können nach dem Zufallsprinzip zu töten, ein Verfahren (fast) ohne eine Spur, wenn das system über wenig Arbeitsspeicher.
Wir haben ran 5.5 in der Produktion seit Jahren und hatte nie irgendwelche unerklärliche Stillstände, FWIW.
InformationsquelleAutor der Antwort MK.
Dieser arbeitete für mich.
Als hier vorgeschlagen in anderen Antworten überprüft, system-logs in
/var/log/messages
aber die Erlaubnis verweigert für mich. Also benutzte ichdmesg
Befehl statt, und hat diese in den logs"Out of memory: Kill process 14606 (java) score 106 oder Opfer Kind".
In der Ausgabe habe ich auch bemerkt, Swap-Speichers frei 0 K. Lief
top
Befehl, um zu bestätigen, das gleiche. So, irgendwie gab es eine hohe Speicherauslastung verursacht das OS zu töten, meine tomcat-Prozess.Nach endlosen Stunden endlich den Grund.
ps -ef | grep tomcat
zeigten, dass es mehrere tomcat-Prozesse ausgeführt werden und für die gleiche Anwendung. Es scheint, dass die früheren tomcat Herunterfahren möglicherweise nicht erfolgreich abgeschlossen wurden und aus irgendeinem Grund wurden die Prozesse nicht getötet, selbst nach dem abschalten, die verursacht wurde die hohe Speicherauslastung.So, tötete alle Laufenden tomcat-Prozesse mit
kill
. SWAP-Speicher bekam freigegeben.Begann tomcat wieder, fein gearbeitet. 🙂
InformationsquelleAutor der Antwort Kaushal Dokania
Tomcat 7 hat eine option innerhalb catalina zu verhindern, dass das System.exit-Klasse rufen oder etwas ähnliches: http://ci.apache.org/projects/tomcat/tomcat7/docs/security-manager-howto.html .
Vielleicht gibt es eine ähnliche option für die 5.5-version. Versuchen Sie die Dokumentation.
Gibt es Optionen zum umleiten der Ausgabe an der gleichen Konsole, die Sie zum starten von Tomcat. Diese information wird weitergeleitet, Protokolle, wenn Sie führen Sie auf Unix-basierten Systemen, die auf Windows, es bleibt mit der Konsole, wenn Sie nicht umgeleitet werden.
InformationsquelleAutor der Antwort
Wahrscheinlich gibt es einen stack-überlauf Ausnahme. Das ist ein typisches Verhalten von Tomcat wenn es passiert. Zum Beispiel, Sie versuchen, zu serialisieren zu JSON-oder XML-Bohnen mit zyklischen Abhängigkeiten (aber ohne Umgang mit den Zyklen).
Jedesmal, wenn ich dieses Problem gehabt (mehrmals) es war schon immer diese eine. Alle anderen Haltestellen sind in der Regel ordnungsgemäß angemeldet (wie OutOfMemory etc).
Diese Art von Haltestellen hinterlässt keine Spuren überall.
InformationsquelleAutor der Antwort Eugene Retunsky