AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen
Thema durchsuchen
Ansicht
Themen-Optionen

VisualMM - Überwachung der FastMM Nutzung laufender Anwendungen

Ein Thema von mjustin · begonnen am 4. Jan 2012 · letzter Beitrag vom 11. Mär 2012
Antwort Antwort
mjustin
Registriert seit: 14. Apr 2008
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 http://www.habarisoft.com/visualmm.html ist ein interaktives Chart zu sehen, das einen Speicherschnappschuss darstellt.

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

http://www.habarisoft.com/download/VisualMMWebDemo.zip

Sie erfordert Apache ActiveMQ 5 (Download auf http://activemq.apache.org).

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,

Geändert von mjustin (19. Jan 2012 um 13:20 Uhr)
 
Medium

 
Delphi 2007 Enterprise
 
#2
  Alt 4. Jan 2012, 12:00
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
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#3
  Alt 4. Jan 2012, 13:51
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.
Das geht im Prinzip problemlos. Die Daten werden über eine Middleware zwischengespeichert, der es egal ist wer (Webinterface oder GUI Anwendung) oder wieviele auf die Daten zugreifen: wenn eine Anwendung über das Webinterface überwacht wird, können gleichzeitig eine oder mehrere GUI Clientanwendungen die gleichen Daten abfragen.

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 http://www.habarisoft.com/visualmm.html enthält jetzt vier Charts, zwei sind nach Allokationsgröße und zwei nach Zeitpunkten auf der X-Achse aufgebaut:

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)
Michael Justin

Geändert von mjustin ( 5. Jan 2012 um 22:09 Uhr)
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#4
  Alt 6. Jan 2012, 20:26
Zweite Stand-Alone Demoversion als Download:

http://www.habarisoft.com/download/VisualMMWebDemo.zip (602 KB)

Sie erfordert Apache ActiveMQ 5 (Download auf http://activemq.apache.org).

Der ActiveMQ Broker muss zuerst entpackt und gestartet werden:

Code:
<Pfad zu ActiveMQ>\bin\activemq-admin.bat start xbean:activemq-demo.xml
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:

Code:
 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
VisualMMWebDemo.exe enthält einen eingebetteten Indy HTTP Server. Die lokale Firewall wird daher eine Sicherheitsabfrage anzeigen.

Wenn VisualMMWebDemo.exe gestartet wird, erscheint zuerst ein Konsolenfenster:

Code:
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
...
Die "[Collector]" Zeile erscheint fortlaufend, sie zeigt an, dass neue Messwerte eingetroffen sind.

Nach dem Start zeigt VisualMMWebDemo eine Webseite im Browser an, die vier Charts enthält. Eine Beispielseite ist auf http://www.habarisoft.com/visualmm.html zu sehen. Die Demo-Anwendung schreibt ihre eigene Speicherbelegung an den ActiveMQ Broker und liest sie auch wieder von dort, um die Charts zu generieren.

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.
Michael Justin

Geändert von mjustin (19. Jan 2012 um 13:20 Uhr)
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#5
  Alt 19. Jan 2012, 13:23
Neue Demo, sie zeigt auf der Startseite alle überwachten Anwendungen als Liste von Hyperlinks auf jeweiligen Charts an:

http://www.habarisoft.com/download/VisualMMWebDemo.zip (602 KB)

Bei Interesse stelle ich die Demo gerne mit Untersützung für HornetQ, OpenMQ und RabbitMQ Middleware bereit.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#6
  Alt 16. Feb 2012, 13:13
Update:

VisualMM ist im neuen Web Framework dwf (http://www.delphipraxis.net/165882-d...er-delphi.html) enthalten, das zur Zeit im Betatest ist.

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.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#7
  Alt 11. Mär 2012, 07:19
Update:

Eine Demo von VisualMM, die keinen ActiveMQ message broker benötigt, ist im Web Components Demo 'Kitchen Sink' unter

http://www.habarisoft.com/habari_webcomponents.html

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.
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz