2016-07-19 14 views
0

Ich habe eine Anwendung läuft in Jboss 5.1 und es wird Performance-Problem jede zweite Woche und wir müssen die Anwendung neu starten, um es wieder normal zu bringen. Der obige Graph aufgenommen wird, wenn Anwendung bei Spitzenstunde .I'm läuft versucht zu verstehen, dass es Raum für eine Verbesserung von Anwendungsperspektive vor (wie Infrastruktur und Netzwerk)Jboss Anwendung schlechte Leistung

Graph generated through jvisualvm which shows heap usage in den anderen Bereichen suchen Hier

ist die Heap-Größe Einstellungen ich für diese Anwendung erhalten haben

JAVA_OPTS="${JAVA_OPTS} -Xms3072m -Xmx6144m -XX:PermSize=512m -XX:MaxPermSize=2048m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true " 
JAVA_OPTS="$JAVA_OPTS -verbose: gc -Xloggc:/test/log/gc.log -XX: +PrintGCDetails -XX:+PrintGCDateStamps" 
  1. Warum, vom Graphen, verwendet die Anwendung nur 3G von Speicher sogar , obwohl ich 6G als maximalen Speicher gegeben habe?
  2. Sind meine GC-Einstellungen korrekt? Ich habe vielleicht von einem anderen Server kopiert, wie stelle ich sicher, dass ich richtige GC-Einstellung für diese Anwendung habe?
  3. Ist GC zu häufig passiert, wenn ich Zeitintervall von Einstellungen entfernen, wie würde es feststellen, wenn GC muss ausgeführt werden?
  4. Ich nahm Heap Dump letzten Mal, als wir die Anwendung neu starten mussten und in jvisvisualvm geladen, aber ich weiß nicht, was in Heap dump (Ich bin kein Entwickler) Kann jemand sagen, was zu suchen in Haufen Dump und wie es
  5. gibt es etwas, was wir Anwendung zur Verbesserung der Leistung von tun können, zu verbessern, was wir in den Graphen und GC-Einstellungen siehe

Antwort

0

Hier sind Ihre Punkte zu meiner besten Fähigkeit beantwortet:

  1. Zur Zeit ist Ihre App mit 3 GB Heap zufrieden und muss nicht erhöht werden. Vermutlich tut es so, wie es geht, bevor es jede zweite Woche versagt.
  2. GC-Performance-Tuning ist die Antwort. Sie müssen überwachen und anpassen, nur wenn Sie wissen, was Sie einstellen. Dann messen, loggen. Spülen und wiederholen.
  3. Es wird GC ausgeführt, wenn es benötigt wird (wenn seine Young Generation nicht mehr genügend Speicherplatz hat). Es misst viele Dinge und berücksichtigt verschiedene Einstellungen, um zu entscheiden, wann zu GC. Es wird ohne jede Hilfe passieren, aber Sie können es ein bisschen mehr von dem globalen Bild erzählen, das GC versucht, sich selbst einzustellen.
  4. Sie können es auf viele Arten schneiden und würfeln. Diese Menge an Informationen ergibt viele Ansichten. Sie können sich anschauen, welche Klassen den meisten Speicher verwenden. Dies könnte darauf hindeuten, wo das Problem liegt (ich vermute, dass ein Speicherleck oder eine andere Systemressource wie das Dateihandle nicht freigegeben wird). Siehe hier for basic use of VisualVM
  5. Sie müssen wissen, was das Problem verursacht. Normalerweise ist es das Beste, die fehlerhafte App zu reparieren, anstatt die Last auf GC zu verlagern. Wenn Sie ein Ressourcenleck haben, wird es Sie sowieso früher oder später treffen.