Warum funktioniert Tomcat 5.5 (mit Java 1.4, auf Windows XP 32-bit) plötzlich hängen?

StackOverflow https://stackoverflow.com/questions/66104

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe seit Tomcat 5.5 mit Java 1.4 für eine Weile jetzt mit einem riesigen Webapp. Die meiste Zeit läuft es gut, aber manchmal wird es einfach hängen, ohne Ausnahme erzeugt und keine apparant Art und Weise des Erhaltens wieder andere zu laufen als Neustarten Tomcat. Die Kater-Instanz wird ein Gigabyte Speicher auf dem Heap erlaubt, aber selten mehr als 300 MB. Hat sonst noch jemand in dieser Frage laufen, und gibt es eine Lösung für das?

Zur Klarstellung: Ich bestimmt, wie viel Speicher sie über den Task-Manager verwendet und über Eclipse-(Ich habe auch versucht es außerhalb von Eclipse läuft, aber das gleiche Problem schließlich bekommen, obwohl es ein wenig länger dauert). Mit Eclipse sehe ich den Speicher über seinen kleinen (optional) Speicherbereich zugewiesen, und die Menge über den Task-Manager Javaw.exe zugeordnet. Ich verwende den Sysdeo? tomcat-Plugin für Eclipse.

War es hilfreich?

Lösung

Für jeden Jvm Prozess zwingen, ein Thread-Dump. In Windows, kann dies mit CTRL-BREAK getan werden, glaube ich, im Konsolenfenster.

* nichts, es ist fast immer "kill -3 jvm-pid".

Diese zeigen können, wenn Sie Threads warten auf DB-Verbindung Pool / Thread-Pool, etc.

Eine andere Sache, um zu überprüfen, wie viele Verbindungen, die Sie haben zur Zeit der JVM - entweder NETSTAT oder SysInternals Dienstprogramm wie tcpconn / TCPView (google it)

.

Versuchen Sie auch, mit der ausführlichen auszuführen: gc JVM Flagge. Für Sun JVM laufen wie "java -verbose: gc". Dies wird Ihre Garbage Collection zeigen. Wenn es eine Menge (FULL COLLECTIONS, expecially) zu sammeln, dann haben Sie wahrscheinlich ein Speicherleck. Die vollständigen Sammlungen sind teuer, vor allem auf großen Haufen so.

Wie wird die Bestimmung, dass nur 300mb verwendet werden?

Andere Tipps

Es klingt wie Sie einen Deadlock treffen sind.

Wenn Sie es in einer Entwickler-Umgebung reproduzieren können dann versuchen, einen Debugger angebracht, wenn es passiert ist. Werfen Sie einen Blick auf Ihre Themen und sehen Sie, wenn Sie irgendwelche Deadlocks haben.

Wenn Sie nicht einen Debugger erhalten befestigen Sie sollten in der Lage ein Thread-Dump zu erzeugen, wie Dustin hingewiesen.

Versuchen Sie, die Logging-Empfindlichkeit für den Tomcat-Anwendungsserver zu erhöhen. http://tomcat.apache.org/tomcat-5.5-doc/logging. html

Sie können die Empfindlichkeit erhöhen FINEST oder ALL für die meisten von ihnen für ein paar Tage und sehen, ob das Sie etwas fangen können.

Ich bin mit mehrere Thread-Dumps zu schaffen und sie wenn dies angezeigt: Thread-Dump Analyzer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top