2009-03-27 2 views
1

Wir haben ein seltsames Problem mit unseren Java-Prozessen sterben.Was ist der beste Weg, (Java) Prozess Todesfälle auf einer Windows-Box zu überwachen?

Die Anwendung nicht funktioniert Stacktrace, oder irgendetwas in die Protokolle schreiben, wird der Prozess nur zufällig stirbt. Es ist eine häufig verwendete Anwendung, aber das Problem tritt nur etwa einmal im Monat auf.

suchen wir zur Zeit in Process Monitor verwenden, aber andere Vorschläge willkommen wäre.

Edit:

Es ist eine verteilte Java-Anwendung, auf Weblogic läuft mit einem hauseigenen Web-Framework (Ja, das ist eine schreckliche Idee, aber es ist seit acht Jahren läuft), um Oracle zu verbinden.

-

Nicht genügend Speicher? Unsere Protokolle würden laut Brian Agnew java.lang.OutOfMemoryException fangen.

schreiben stürzt in ein Protokoll? Ich glaube nicht, dass Java jemals die Chance bekommt, der Tod geschieht auf Prozessebene, anstatt Java zu beenden.

+1

Nicht abhängig von OutOfMemoryException wird in jedem Protokoll angezeigt. Es könnte sogar nicht genug Speicher frei sein, um das OOME zu werfen und der Java-Prozess wird "still" sterben. – ordnungswidrig

Antwort

0

Sie können einen Linux NAGIOS Server verwenden, um die Gesundheit Ihrer Windows-Rechner und Dienste zu überwachen! Sehen Sie sich an: nagios-monitoring-windows.

Wenn Sie solche Probleme mit Ihrer Java App haben! Sie sollten es testen und debuggen! Anwendungen sollten nicht spurlos sterben! Suchen Sie nach Logfiles! Aus welchem ​​Anbieter stammt die App? Oder ist es selbst geschrieben? Versuchen Sie, einen anderen Log4J/Logger/Debug-Level zu erzwingen. Überwachen Sie Ihr System mit Kakteen usw., um die Möglichkeiten für einen solchen Absturz zu reduzieren. Sprechen Sie mit dem Softwareanbieter.

Ist enogh speicher verfügbar? Vielleicht hat die App keinen Speicher mehr? Ist es ein eigenständiger Java-Prozess oder ein Java-Prozess von einem Tomcat/Jboss-Server?

Haben Sie die Absturzzeiten in ein Protokoll geschrieben? Erscheinen sie in verschiedenen Zeitscheiben? Oder erscheinen sie fast zeit-kreisförmig?

+0

Die VM wird nicht abstürzen, wenn der Arbeitsspeicher knapp wird. Es wird nicht mehr vom Betriebssystem zuweisen, und werfen java.lang.OutOfMemoryExceptions, aber die VM bleibt –

2

Können Sie es in einigen Shell-Skript wickeln, das die Protokolldateien (stdout/stderr) und den Exit-Code erfasst (was einen Hinweis darauf, wie es starb geben sollte)? Beim JVM-Exit können Sie auch Statistiken auf Rechnerebene mit WMI

erfassen. Wenn die VM selbst abstürzt, hinterlässt sie eine Datei hs_err_pid ..., die Stacktraces, Debug-Informationen auf Maschinenebene enthält. Sie können das dann verwenden, um das VM-Problem zu diagnostizieren. Weitere Informationen finden Sie unter this blog entry.

Wenn das Problem mit dem Verhalten der App zusammenhängt, kann es sich lohnen, sich mit JConsole zu befassen, obwohl sich das nach Ihrer Beschreibung des Problems eher wie ein schwaches VM-Problem anhört.

(ich nehme an, Sie über die neuesten VM sind für Ihre Java-Versionsnummer usw.

)
+0

Ich habe das gesamte Laufwerk gescannt, und keine Dateien enthalten 'hs_err' im Dateinamen. Ich denke, das bedeutet, dass die VM nicht abstürzt. Ich werde in WMI und JConsole suchen, danke. –

0

VisualVM ist ein neues Tool, das die Überwachung von Java-Anwendungen erleichtert:

https://visualvm.dev.java.net/description.html

„VisualVM ist ein Tool, das detaillierte Informationen über Java-Anwendungen bereitstellt, während sie ausgeführt werden Es bietet eine intuitive grafische Benutzeroberfläche. Dadurch können Sie Informationen zu mehreren Java-Anwendungen problemlos anzeigen. "

Verwandte Themen