![]() |
VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen
Für lang laufende Delphi-Anwendungen (zum Beispiel Dienste, Application- oder Webserver) ergeben sich im Produktionsbetrieb oft besonders hohe Anforderungen an die Erkennung und Beseitigung von Memory Leaks.
VisualMM soll den Produktivbetrieb solcher Anwendungen absichern, indem es laufend aktuelle FastMM Statistiken erstellt und sendet. Über eine einfache Delphi-Webanwendung können diese Daten dann abgerufen und grafisch aufbereitet werden. Auch dies geschieht dynamisch, man sieht also den aktuellen Speicherstatus der Anwendung(en). Zum Beispiel unter ![]() Auf der X-Achse werden die FastMM Speicherblockgrößen dargestellt, auf der Y-Achse die Anzahl belegter Speicherblöcke (im oberen Diagramm) bzw. der von diesen Blöcken belegte Speicher (in Kilobytes). Die aktuelle Demoversion (602 KB, Webdemo und eine leakende GUI Anwendung) ist verfügbar unter ![]() Sie erfordert Apache ActiveMQ 5 (Download auf ![]() Eine Anleitung (readme.txt) ist enthalten - siehe auch Beitrag 4 weiter unten. Die aktuelle Version der Webdemo stellt auf der Startseite eine Liste aller zur Zeit überwachten Anwendungen dar. Man kann den Demo-Server auch mehrfach starten, alle Server können dann alle Server überwachen - siehe readme. Viele Grüße, |
AW: VisualMM - Runtime Monitoring für den FastMM Memory Manager
Ui, das finde ich ja hübsch! Wie aufwändig wäre es, das statt des Webinterfaces in ein ins Programm integriertes Modul (Komponente oder Unit mit eingängigem Interface) zu pressen? Wäre für mich sehr praktisch, da ich einige Langzeitsysteme habe, die aber nicht am Internet hängen (dürfen), bei denen ich gerne nachprüfen würde, ob meine "ReportMemoryLeaksOnShutdown"-Sandbox-Tests und "Taskmanagerspeicherverbrauchbegucken" auch im lebenden System noch so gut aussehen. Dafür müsste ich das eben nur lokal auf der Maschine irgendwie loggen und ggf. aufbereiten/anzeigen können.
Der Beschreibung nach schon ein nettes Werkzeuglein :) |
AW: VisualMM - Runtime Monitoring für den FastMM Memory Manager
Zitat:
Daraus ergibt sich, dass das GUI Interface auch in die überwachte Anwendung integriert werden kann. Der Overhead der sich aus der Aufbereitung der Daten ergibt hängt davon ab, ob nur aktuelle Daten (Snapshots) oder auch Zeitverläufe (Timelines aus z.B. jeweils den letzten 100 Datensätzen) gebildet werden. Internetzugriff ist eigentlich nicht erforderlich (lediglich in der Demo benutze ich die Google Chart API Javascript Bibliotheken, die im Internet liegen, man könnte sie im Prinzip auch lokal speichern oder durch andere ersetzen). Am einfachsten wäre es in die Anwendung eine Javascript-fähige Webbrowser-Komponente einzubinden, die dann auf den eingebetteten VisualVM (HTTP-)server zugreift. Das geht problemlos bei geschlossener Firewall. Ich schaue mal ob das in der ersten Release machbar ist. p.s. das dynamische Beispieldokument unter ![]() 1. FastMM Memory Block Count (current snapshot) 2. FastMM Overall Block Count (timeline for last n snapshots) 3. FastMM Memory Block Size (current snapshot) 4. FastMM Overall Block Size (timeline for last n snapshots) |
AW: VisualMM - Runtime Monitoring für den FastMM Memory Manager
Zweite Stand-Alone Demoversion als Download:
![]() Sie erfordert Apache ActiveMQ 5 (Download auf ![]() Der ActiveMQ Broker muss zuerst entpackt und gestartet werden:
Code:
Es öffnet sich dann ein Fenster, in dem der Startvorgang des Brokers zu sehen ist. Sobald wenn die Zeile "Connector stomp Started" erscheint, kann VisualMM verwendet werden:
<Pfad zu ActiveMQ>\bin\activemq-admin.bat start xbean:activemq-demo.xml
Code:
VisualMMWebDemo.exe enthält einen eingebetteten Indy HTTP Server. Die lokale Firewall wird daher eine Sicherheitsabfrage anzeigen.
INFO | Connector ssl Started
INFO | Listening for connections at: stomp://127.0.0.1:61613 INFO | Connector stomp Started INFO | Listening for connections at: xmpp://127.0.0.1:61222 INFO | Connector xmpp Started INFO | ActiveMQ JMS Message Broker (amq-broker, ID:mj-PC-49686-1326916253657-0: 1) started INFO | jetty-7.1.6.v20100715 INFO | ActiveMQ WebConsole initialized. INFO | Initializing Spring FrameworkServlet 'dispatcher' INFO | ActiveMQ Console at http://0.0.0.0:8161/admin INFO | ActiveMQ Web Demos at http://0.0.0.0:8161/demo INFO | RESTful file access application at http://0.0.0.0:8161/fileserver INFO | Started SelectChannelConnector@0.0.0.0:8161 INFO | Apache Camel 2.7.0 (CamelContext: camel) is starting INFO | JMX enabled. Using ManagedManagementStrategy. INFO | Found 5 packages with 16 @Converter classes to load INFO | Loaded 152 type converters in 0.563 seconds WARN | Broker localhost not started so using amq-broker instead INFO | Connector vm://localhost Started INFO | Route: route1 started and consuming from: Endpoint[activemq://example.A] INFO | Total 1 routes, of which 1 is started. INFO | Apache Camel 2.7.0 (CamelContext: camel) started in 1.392 seconds Wenn VisualMMWebDemo.exe gestartet wird, erscheint zuerst ein Konsolenfenster:
Code:
Die "[Collector]" Zeile erscheint fortlaufend, sie zeigt an, dass neue Messwerte eingetroffen sind.
VisualMM - run-time memory monitoring for FastMM
(c) 2012 Habarisoft [url]www.habarisoft.com[/url] Compiled with Habari Client for ActiveMQ 3.0 Compiled with FastMM version 4.99 Server ready for HTTP connections on port 80 Hit any key to stop the server [GET] / [GET] /favicon.ico [GET] /favicon.ico [GET] / [Collector] 19:51:10.0 Msg: VisualMMWebDemo.exe PID: 2688 [Collector] 19:51:15.0 Msg: VisualMMWebDemo.exe PID: 2688 [Collector] 19:51:20.0 Msg: VisualMMWebDemo.exe PID: 2688 ... Nach dem Start zeigt VisualMMWebDemo eine Webseite im Browser an, die vier Charts enthält. Eine Beispielseite ist auf ![]() Die aktuelle Demoversion (siehe erster Beitrag) zeigt auf der Server-Homepage eine Auswahlliste dar, in der aus allen momentan überwachten Anwendungen die gewünschte gewählt werden kann. Aktuell wird die Prozess-ID des Betriebssystems zur Unterscheidung der Anwendungen verwendet. Der VisualMMWebDemo Server kann durch eine beliebige Taste beendet werden. |
AW: VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen
Neue Demo, sie zeigt auf der Startseite alle überwachten Anwendungen als Liste von Hyperlinks auf jeweiligen Charts an:
![]() Bei Interesse stelle ich die Demo gerne mit Untersützung für HornetQ, OpenMQ und RabbitMQ Middleware bereit. |
AW: VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen
Update:
VisualMM ist im neuen Web Framework dwf ( ![]() Unterstützt durch VisualMM ist das Web Framework in der Lage, seinen aktuellen und 'historischen' Speicherbedarf, soweit er über FastMM verwaltet wird, graphisch darzustellen. Doch nicht nur seine eigene Speicherbelegung ist so darstellbar. Weil VisualMM einen externen Message Broker einsetzt (ActiveMQ, Apollo, HornetQ oder OpenMQ), können beliebig viele andere Delphi Anwendungen im Netzwerk die Visualisierung über das VisualMM Modul nutzen. Mehrere tausend VisualMM Nachrichten pro Sekunde sind dabei erreichbar. |
AW: VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen
Update:
Eine Demo von VisualMM, die keinen ActiveMQ message broker benötigt, ist im Web Components Demo 'Kitchen Sink' unter ![]() enthalten. Die Demo startet einen lokalen Web Server und stellt die FastMM4 Speicherbelegung der Demo dar, das Programm überwacht also nur seinen eigenen Speicher. Neue Samples werden alle zehn Sekunden erzeugt, und über die Google Charts API zu Diagrammen verarbeitet. Zusammen mit den Habari Web Components ist geplant, die zentrale Überwachung beliebiger anderer Delphi Prozesse im Netz auch über andere Protokolle (vor allem HTTP) zu unterstützen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz