2009-02-25 9 views
6

Ich bin auf der Suche nach einer Möglichkeit für die Anwendung selbst, um die Menge des Speichers zu überwachen, so kann ich es in einer Protokolldatei jede Stunde oder so aufzeichnen und halten Sie eine Achten Sie auf die Anwendungsnutzung.Überwachung von ASP.NET-Anwendungsspeicher innerhalb der Anwendung

Es ist alles gehostet, so dass wir Änderungen am System vornehmen können, um zu sehen, was vor sich geht, so dass die Lösung aus dem Anwendungscode stammen muss.

Wir können künftig die Speicherinformationen verwenden, um die Caching-Richtlinien zu beeinflussen.

Antwort

5

Hmm, wie detaillierte Informationen benötigen Sie? Wenn Sie nur die Speichernutzung möchten, können Sie den GC fragen. Es weiß. ;)

long bytes = GC.GetTotalMemory(false); // use 'false' to not wait for next collect 

Die Variable 'Bytes' enthält die Anzahl der Bytes, die derzeit im verwalteten Speicher zugeordnet sind. Ich bin mir nicht sicher, ob der verwaltete Speicher den gesamten Prozess oder nur die AppDomain umfasst. Sie müssen dies testen, indem Sie mehrere AppDomains in einem Prozess ausführen und überprüfen, ob die verwaltete Speicherzuweisung über AppDomains hinweg gemessen wird. Wenn dies nicht der Fall ist, können Sie damit die Gesamtspeicherauslastung in einer ASP.NET-Anwendung messen.

Wenn Sie genauere Informationen wünschen, gibt es eine Diagnose-API für die CLR, mit der Sie interagieren können. Es gibt auch viele Speicher-Profiler da draußen, aber wenn sie innerhalb einer ASP.NET-Anwendung funktionieren, kann ich nicht sagen.

1

Wenn Sie weitere Informationen wünschen, können Sie die Leistungsindikatoren alternativ mit der System.Diagnostics.PerformanceCounter-Klasse lesen. Hier sind einige der Indikatoren, die Sie anschließen können in:

Anfrage Out Total Bytes

Anfrage Bytes insgesamt

Anfrage Wartezeit

Requests Executing

Requests/Sec

Fehler Gesamt