Profilerstellung für eine mehrschichtige, verteilte Webanwendung (serverseitig)

Ich würde gerneProfil eine komplexe Webanwendung vom Server PoV.

Laut obigem Wikipedia-Link und dem Stack Overflowprofiling Tag-Beschreibung, Profiling (in einer seiner Formen) bedeutet das Abrufen einer Liste (oder einer grafischen Darstellung) von APIs / Komponenten der Anwendung, jeweils mit der Anzahl der Aufrufe und der zur Laufzeit darin verbrachten Zeit.

Beachten Sie, dass eine Web-Server-Anwendung im Gegensatz zu einer herkömmlichen Ein-Programm- / Ein-Sprache-Anwendung Folgendes sein kann:

Auf mehrere Maschinen verteiltVerschiedene Komponenten können in verschiedenen Sprachen geschrieben seinVerschiedene Komponenten können auf verschiedenen Betriebssystemen usw. ausgeführt werden.

Die traditionelle Antwort "Just use a profiler" lässt sich daher nicht einfach auf dieses Problem anwenden.

Ich binnicht Auf der Suche nach:

Grobe Leistungsstatistiken, wie sie von verschiedenen bereitgestellt werdenLog-Analyse-Tools (z. B. analog) noch fürclientseitig, pro Seite Leistungsstatistiken wie die von Tools wie Google Pagespeed oder Yahoo! Y! Slow (Wasserfalldiagramme und Ladezeiten der Browserkomponenten)

Stattdessen suche ich nach einem klassischen Profiler-Bericht:

Anzahl der AnrufeAnrufdauer

nach Funktion / API / Komponentenname auf derserverseitig der Webanwendung.

Unterm Strich lautet die Frage:

Wie kann man eine mehrstufige, plattformübergreifende, verteilte Webanwendung profilieren?

Eine auf freier Software basierende Lösung ist sehr bevorzugt.

Ich habe eine Weile im Internet nach einer Lösung gesucht und konnte nichts finden, was meinen Bedürfnissen entsprach, außer ein paar ziemlich teuren kommerziellen Angeboten. Am Ende habe ich die Kugel gebissen, über das Problem nachgedacht und meine eigene Lösung geschrieben, die ich frei teilen wollte.

Ich poste meine eigene Lösungda diese Praxis auf SO gefördert wird

Diese Lösung ist bei weitem nicht perfekt, zum Beispiel ist sie auf sehr hohem Niveau (einzelne URLs), was möglicherweise nicht für alle Anwendungsfälle geeignet ist. Trotzdem hat es mir sehr geholfen zu verstehen, wo meine Web-App ihre Zeit verbringt.

Im Sinne von Open Source und Wissensaustausch begrüße ich alle anderen, insbesondere überlegenen Ansätze und Lösungen von anderen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage