2008-09-16 6 views
4

Hat jemand das neue Java 1.6 JDK-Tool VisualVM verwendet, um eine Produktionsanwendung zu profilieren und wie funktioniert die Anwendung, während sie profiliert wird?Java 1.6 JDK-Tool, VisualVM

Die Dokumentation besagt, dass es sowohl für die Produktion als auch für die Entwicklung geeignet ist, aber basierend auf früheren Profilerfahrungen, mit anderen Profilierungswerkzeugen, zögere ich.

Antwort

5

Während ich VisualVM nicht persönlich benutzt habe, sah ich dieses blog post gerade heute, das einige nützliche Informationen für Sie haben könnte. Er spricht über die Erstellung einer Produktions-App, die es verwendet.

1

Ich probierte es auf einer Dev-Box und stellte fest, dass Tomcat unerwartet heruntergefahren wurde, wenn ich das Profiling abstellte. Ich wäre sehr vorsichtig, wenn es darum geht, dies in die Produktion auszulagern - können Sie stattdessen die Belastung in einer Staging-Umgebung simulieren? Es ist nicht so gut wie das echte Ding, aber es wird wahrscheinlich nicht gefeuert, wenn es schief geht ...

0

Es ist möglich, Remote-Verbindung zu Ihrem Server von einem anderen Computer mit VisualVM. Sie müssen nur mit der rechten Maustaste auf den Knoten "Remote" klicken und "Remote Host hinzufügen" sagen.

Dies würde den VisualVM-Overhead (falls vorhanden) zumindest davon abhalten, die Leistung während der Ausführung zu beeinträchtigen.

Dies beseitigt möglicherweise nicht alle Leistungsbedenken, besonders in Produktionsumgebungen, aber es wird ein wenig helfen.

1

Ich habe VisualVM zuvor verwendet, um etwas lokal zu profilieren. Ein großer Gewinn war, dass ich es einfach starten und es mit der laufenden JVM verbinden kann. Es ist einfacher zu verwenden als andere Profiling-Tools, die ich zuvor verwendet habe und scheint nicht so viel Overhead zu haben.

Ich denke, es ist Sampling. Der Overhead einer CPU-intensiven Anwendung schien nicht signifikant zu sein. Ich habe nichts gemessen (ich war daran interessiert, wie meine App lief, nicht wie das Tool lief), aber es hatte definitiv nicht den Faktor 10, den ich von Profiling gewohnt bin.

0

Ich habe den Net Beans Profiler verwendet, der die gleichen Grundlagen wie Visual VM verwendet.

Ich arbeitete mit einer älteren Version von Weblogic, was bedeutete, die 1.5 JVM zu verwenden, also konnte ich keine dynamische Verbindung herstellen. Die Anwendung, die ich erstellte, hatte mehrere tausend Klassen und meine Workstation war ziemlich unbrauchbar, während der Profiler sie alle instrumentierte. Sobald die Instrumentierung abgeschlossen war, war das System träge, aber nicht vollständig unbrauchbar. Die Höhe der Verlangsamung hängt wirklich davon ab, was Sie aufnehmen müssen. Die grundlegenden CPU-Metriken sind ziemlich leicht. Die Speicherzuweisung für die Profilerstellung verlangsamt die Dinge erheblich.

Ich würde es nicht auf einem Produktionssystem verwenden. Abgesehen von dem Potenzial für eine Verlangsamung, ging mir schließlich der PermGen-Speicherplatz aus, da der Profiler Klassen neu einleitet und neu lädt, wenn Sie die Einstellungen ändern. (Dies kann in der 1.6-Agent behoben werden, ich weiß es nicht)

1

Für die Überwachung Ihrer Anwendung, VisualVM Remotebetrieb sollte nicht viel verlangsamen. Wenn das System nicht am Rande des Zusammenbruchs ist, habe ich immer noch keine Probleme gesehen. Es liest im Grunde nur Informationen aus der grobkörnigen integrierten Instrumentierung der JVM. Wenn Sie jedoch mit dem Profiling beginnen, haben Sie dieselben Probleme wie mit anderen Profilern. Im Grunde, weil sie alle fast auf die gleiche Weise arbeiten und oft die Unterstützung in der JVM verwenden.

Viele Menschen haben Probleme mit VisualVM läuft remote aufgrund Firewall-Probleme, aber Sie können auch Visual VM remotely over ssh, mit einigen Systemeigenschaften festgelegt laufen.

+0

Der Blogpost wird mit einigen weiteren Informationen zum Starten von Jstatd aktualisiert. – hennings

0

Ich habe VisualVM schon lange benutzt, bevor es in das JDK aufgenommen wurde. Es hat einen vernachlässigbaren Einfluss auf die Leistung des Systems. Ich habe nie bemerkt, dass es ein Problem mit der Leistung auf dem System gab, aber andererseits hatte unser Java-Server damals genug Spielraum, um ein wenig zusätzliche Last zu unterstützen. Wenn Ihr Server auf einer Ebene läuft, die vollständig deaktiviert ist und VisualVM nicht ausgeführt werden kann, würde ich sagen, dass es wahrscheinlicher ist, dass Sie einen anderen Server kaufen müssen. Jeder Produktionsserver sollte einen gewissen Speicher-Headroom haben, sonst wartet nur eine Katastrophe auf Sie.

0

Ich habe VVM (VavaVoom?) Ziemlich ausgiebig verwendet, funktioniert wie ein Zauber im Lichtmodus, d. H. Kein Profiling, nur die grundlegenden Daten von der VM zu bekommen. Aber wenn Sie mit dem Profiling beginnen und es viele Klassen gibt, dann gibt es eine erhebliche Verlangsamung. Ich würde nicht in einer Produktionsumgebung profilieren, auch wenn Sie 128-Core-Board mit 2 Tera Speicher haben, nur weil das Umladen und Neudefinition der Klassen ist schwierig, die Server-Klassenlader sind eine andere Sache, auch von einer Server-Implementierung zum anderen variieren Es ist keine gute Idee, sie in der Produktion zu stören.