Das Notes Forum

Domino 9 und frühere Versionen => ND8: Administration & Userprobleme => Thema gestartet von: r5027 am 10.09.12 - 12:08:34

Titel: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: r5027 am 10.09.12 - 12:08:34
Hallo zusammen,

auf unserem Traveler Server und auch auf anderen Domino Servern mit Java Agenten gibt es gelegentlich Fehlermeldungen der JVM wie etwa folgende:

05.09.2012 09:01:07   HTTP JVM: JVMDUMP006I Speicherauszugsereignis "systhrow", Detail "java/lang/OutOfMemoryError" wird verarbeitet - bitte warten.
05.09.2012 09:01:07   HTTP JVM: JVMDUMP032I JVM forderte als Antwort auf ein Ereignis einen Speicherauszug von Heap mit "/local/notesdata/heapdump.20120905.090107.5999.0001.phd" an
05.09.2012 9:01:07   HTTP JVM: JVMDUMP010I Speicherauszug von Heap in /local/notesdata/heapdump.20120905.090107.5999.0001.phd geschrieben
05.09.2012 09:01:07   HTTP JVM: JVMDUMP032I JVM forderte als Antwort auf ein Ereignis einen Speicherauszug von Java mit "/local/notesdata/javacore.20120905.090107.5999.0002.txt" an

Das führt dann zu Ausfällen die aber meist nicht sofort auffallen. Kennt jemand eine Möglichkeit wie man auf solche Ereignisse automatisch reagieren kann? Im DDM schlagen die Meldungen leider nicht auf.

Vielen Dank im voraus
Frank
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: Tode am 10.09.12 - 12:18:56
In der Events4 kannst Du einen entsprechenden Event Handler setzen, und dann per Mail, Eintrag in ne Datenbank oder Eintrag in die DDM reagieren. Dazu filterst Du einfach nach einem eindeutigen Text (hier evtl. java/lang/OutOfMemoryError).

Was meinst Du wohl, woher die config dafür kommt, was alles im DDM auftaucht... ;-)
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: alexhe am 10.09.12 - 14:03:09
Evtl wäre es auch sinnvoll die outOfMemory Meldungen zu beseitigen ?

HTTP Threads und physikalischen Speicher genug für eure Devices?
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: Tode am 10.09.12 - 14:31:03
Ach was... Ursachenforschung und behebung ist doch so aufwändig... den Auswirkungen hinterherzuwischen ist viel einfacher... ;-)
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: r5027 am 10.09.12 - 15:45:15
Klar suche ich nach den Ursachen und versuche die Speichereinstellungen zu tunen. Wenn es aber trotzdem schief geht dann möchte ich das sofort wissen und nicht erst durch den User erfahren. Wir haben nur 40 Devices, da überrascht mich ein OutOfMemory schon. Einen Event Handler habe ich jetzt eingerichtet.
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: flaite am 11.09.12 - 06:37:06
Java Heap Space über Serverdokument oder/und Notes.ini Parameter hochsetzen (über notes.ini JavaMaxHeapSpace). Schau halt wie weit der Arbeitsspeicher auf den Servern ansonsten beschäftigt ist. Ein Max Heap Space von 1024m würd ich nicht als crazy ansehen. Wieviel Arbeitsspeicher haben die betroffenen Server nun? Fallen da irgendwelche Spitzen auf? Man kann die Auslastung des Arbeitsspeichers übrigens auch mit sowas wie nagios überwachen. 


Zu Traveller habe ich das noch gefunden:
NTS_Java_Parms=-Xms96m -Xmx512m
In einigen Fällen wurde festgestellt, dass während des Startens von Lotus Notes Traveler auf den Maximalwert für die Größe des Java-Heapspeichers im Serverdokument nicht zugegriffen werden kann. In diesem Fall verwenden Sie "-Xms###m", um den Mindestwert, und "-Xmx###m", um den Maximalwert für die Größe des Heapspeichers in MB anzugeben.

Hilft das immer noch nicht, habt ihr selbst- oder dritt-programmierte Agenten und sofern man an den souce code der Agenten herankommt, könnte ich das vermutlich gegen Rechnung beheben, ohne mich groß in die Business-Logik der Agenten reinzudenken. Es sind immer die gleichen Muster, die zu sowas führen. Bei Interesse, PM an mich.   
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: alexhe am 11.09.12 - 09:56:32
@r5027 Welche Einstellungen hast du denn für den Speicher festgelegt?
Also JavaHeapSpace, HTTP Threads, Traveler Speicherzuweisung? Und wieviel Arbeitsspeicher hat der Server denn ?
Titel: Re: Kann ich auf Statusmeldungen der JVM automatisch reagieren?
Beitrag von: MadMetzger am 11.09.12 - 10:13:05
Die Analyse eines Heapdumps hilft bei solchen Problemen sehr viel. Du solltest den VM-Parameter -XX:+HeapDumpOnOutOfMemoryError setzen, damit du im Falle eines OutOfMemoryErrors etwas zum Analysieren in die Hand bekommst.

Diesen Heapdump kann man dann selbst mit etwa mit den Eclipse Memory Analyzer Tools (http://www.eclipse.org/mat/) analysieren oder diesen Dump einem Experten zur Analyse übergeben. Ohne das wirst du vermutlich nicht auf die Ursache des Problems stoßen können, egal ob mit oder ohne professionelle Hilfe.

Es gibt auch die Möglichkeit einen Heapdump aus einer laufenden JVM mit dem JDK-Tool JVisualVM (http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html) zu ziehen.

Edit: Der Heapdump wird ja schon automatisch erzeugt. Also muss wahrscheinlich der VM-Parameter nicht mehr gesetzt werden. Dieser Heapdump sollte aber Basis für alle weiteren Schritte sein.