SPEICHERLECKS

Ein mysteriös hoher Speicherverbrauch kann in Java-Anwendungen zu ernsthaften Problemen führen - vor allem, wenn JVM-Standardeinstellungen verwendet werden, die schliesslich zu Leistungsproblemen führen. AppDynamics kann Ihnen in Produktionsumgebungen mit grossen Datenvolumen, bei der Fehlerbereinigung und Identifizierung von Speicherlecks, OutOfMemory-Ausnahmen und anderen speicherbezogenen Problemen helfen.

Wie man aus Speicherpools den grössten Nutzen zieht

Durch die Nutzung einer Lösung wie AppDynamics, können Sie ganz einfach unterschiedlich grosse Speicherpools überwachen, um zu verstehen, wie kurz davor Ihre Anwendung steht, ein Java-Speicherleck zu bekommen, damit Sie Ihre Java-Speichereinstellungen besser und genauer einstellen und so Java-Speicherlecks vermeiden können. Zum Beispiel können sich OutOfMemory-Ausnahmen ereignen, wenn der PermGen Space durch einen Anwendungscode erschöpft wird, der manchmal grösser ist als der Standard-PermGen Space im Speicher (in der Regel 64-128 MB).

Keine Angst vor grossen Datenmengen

Ein anderer häufiger Grund für OutOfMemory-Ausnahmen ergibt sich, wenn die Anwendung von relationalen Datenbanken grosse Datenmengen anfragt und versucht, darauf zu bestehen und diese im JVM-Speicher zu verarbeiten. Mit AppDynamics können Sie Speicherlecks feststellen und Heap-Verwendung über einen Zeitraum verfolgen, sowie die Grösse der physischen Objekte (MB) in Ihrem Speicher bestimmen und zählen. Dadurch erhalten Sie einen guten Überblick darüber, wie viele Daten sich zu jeder Zeit in im JVM befinden und wie viel Speicherkapazität von unterschiedlichen Arten von Objekten und Datenstrukturen belegt wird. Ausserdem können Sie diese Informationen mit Speicherbereinigungszyklen korrelieren, um zu verstehen, wie häufig der JVM Speicherkapazität zurückgewinnt. Bei der Speicherbereiningung hält der JVM alle anderen Funktionen an, sodass es wichtig ist, herauszufinden, wie häufig diese Situation eintritt und welchen Einfluss sie auf die Antwortzeiten Ihrer Anwendung haben kann.

Identifizieren Sie die Quelle von Speicherlecks - und zwar schnell

Sind bei Ihnen in Java Speicherlecks vorhanden, werden wir uns diesen zuwenden: Stunden damit zu verbringen, sich durch Thread-Dumps und Profiler zu wühlen, macht keinen Spass. Und ein Heap-Dump will man sich auch nicht antun, wenn die Gefahr besteht, dass zusätzliche Leistungseinbussen Ihre Anwendung zum Stillstand bringen könnten. Aber AppDynamics Java-Speicherleckerkennung kann durchlässige Datenstrukturen erkennen und anzeigen.

AppDynamics verfolgt automatisch über einen längeren Zeitraum die Grösse und das Wachstum von Java Collections wie HashMap, HashSets und ConcurrentLinkedQueues, während in Ihrer Anwendung innerhalb des JVM-Speichers Daten angefragt und festgehalten werden. AppDynamics verwendet intelligente Algorithmen, um festzustellen, welche Datensammlungen möglicherweise Speicherlecks aufweisen und kennzeichnet diese automatisch, damit Benutzer nachforschen und die Inhalte untersuchen können, um besser zu verstehen, welche Objekte zugewiesen werden und wie viel Speicher diese Objekte im Inneren der Datensammlung belegen.

Im Screenshot oben sehen wir zum Beispiel, dass einer Sammlung, die etwa 46 MB Speicher belegt, 109'377 String-Objekte zugeordnet wurden. Sobald wir wissen, welche Objekttypen zugeordnet wurden, ist der nächste Schritt, zu entscheiden, welcher Anwendungscode diese Objekte zuordnet, damit wir das Speicherleck schliessen können. Wir können die Funktion „Access Tracking“ nutzen, wie unten dargestellt. Diese zeigt, welcher Code-Pfad in der undichten Sammlung eine Objektzuordnung (put()) vornimmt. Im Beispiel unten ist es die Methode collectionleak.dosomework(), die der HasSet-Sammlung Objekte zuordnet. Wir können auch den Geschäftsvorgang identifizieren: „Auftrag“ ist verantwortlich für diesen Code-Pfad, also können wir die echte Grundursache und Geschäftsauswirkung auf das Speicherleck feststellen.

AppDynamics stellt eine einfache Möglichkeit für die Überwachung und Verwaltung von Speicher und der Identifizierung von Speicherlecks bereit. Anders, als bei vielen anderen Tools zur Speicherüberwachung (oder Protokollierung), kann AppDynamics in Ihrer Produktionsumgebung ausgeführt werden, ohne für grosse Leistungseinbussen zu sorgen - das bedeutet, Sie können jetzt speicherbezogene Probleme in Ihrer Produktionsanwendung finden und beheben, ohne sich Sorgen über die Auswirkungen auf das Endnutzererlebnis machen zu müssen.

Möchten Sie es selbst ausprobieren? Registrieren Sie sich für die kostenlose 15-Tage Testversion von AppDynamics Pro.