Arbeitsspeicherprobleme mithilfe von VisualVM überwachen
Wenn VisualVM mit Ihrer ThingWorx Lösung verbunden ist, können Sie Echtzeitdaten abrufen, die den Arbeitsspeicher, die CPU und die Thread-Verwendung in Ihrer Lösung anzeigen. VisualVM wird verwendet, um gängige Arbeitsspeicherprobleme zu identifizieren und die Ursache des Verhaltens im Detail zu untersuchen.
Wenn sich Ihre ThingWorx Lösung in einem guten Zustand befindet, zeigt VisualVM eine stabile Arbeitsspeicher- und CPU-Verwendung an. Das verwendete Arbeitsspeicherdiagramm zeigt eine normale Serie von Spitzen an. Dies liegt daran, dass die JVM den verfügbaren Arbeitsspeicher verwendet, bevor eine Bereinigung durchgeführt wird. Die GC-Aktivität ist ein vernachlässigbarer Prozentsatz (weniger als 5 %) der gesamten CPU-Verwendung.
Wenn das System mehr Ressourcen benötigt, bleiben die verwendeten Arbeitsspeicherebenen für lange Zeiträume erhöht. Es ist eine konstante oder manchmal extrem hohe GC-Aktivität als Prozentsatz der gesamten CPU-Verwendung vorhanden.
Die grafischen Hinweise auf die Arbeitsspeichererschöpfung ähneln den Arbeitsspeichermetriken anderer Tools wie dem GC-Protokoll. Wenn Sie VisualVM verwenden, erhalten Sie auf der JVM-Ebene keine bestimmte Metrik. Das Problem wird nur visuell angezeigt. Um die Ursache des Problems zu identifizieren, sollten Sie das Problem detailliert analysieren.
Wenn in VisualVM Arbeitsspeicherprobleme angezeigt werden, messen Sie, welche Threads den Arbeitsspeicher am häufigsten verwenden. Prüfen Sie dies in der Option Sample > Memory > Per thread allocations.
* 
Die Sampling-Daten in einer Produktionsumgebung haben zusätzliche Auswirkungen auf die Leistung und können dazu führen, dass eine langsame Lösung gar nicht mehr reagiert. Verwenden Sie in Produktionsumgebungen den Sampler als letzte Alternative, um Diagnosedaten zu erhalten.
Wenn Sie die Sampler-Option in VisualVM aktivieren, können Sie prüfen, welche Threads den meisten Arbeitsspeicher in Ihrer ThingWorx Lösung verwenden. Um zu sehen, was diese Threads tun, unterbrechen Sie den Sampler, sammeln Sie den Thread-Dump auf der Registerkarte Threads, und suchen Sie das Ergebnis für die Top-Thread-Namen. In der obigen Abbildung führen die OOM_QueryStream-Threads beispielsweise die QueryStreamEntriesWithData-Suche aus, die bekanntermaßen Arbeitsspeicherprobleme in ThingWorx Lösungen auslösen, je nachdem, wie dieser Dienst aufgerufen wird.
Wenn ein Problem auftritt, können Sie einen Schnappschuss der Lösung sammeln. Der Schnappschuss erfasst alle Diagramme und Thread-Dumps. Diese Daten können dem PTC Support für eine weitere Analyse des Problems bereitgestellt werden. Das Sammeln eines Schnappschusses wirkt sich nicht auf die Leistung der Lösung aus.
VisualVM ermöglicht es Ihnen auch, GC-Operationen manuell durchzuführen und Heap-Dumps zu sammeln. Diese Operationen sollten nicht durchgeführt werden, es sei denn, sie werden vom PTC Support empfohlen.
Empfehlung – In Phasen mit niedriger Leistung wird empfohlen, die Arbeitsspeicherdiagramme in VisualVM zu überprüfen und den Arbeitsspeicher zu untersuchen, um Phasen mit hoher Verwendung zu identifizieren.
War dies hilfreich?