Meine Hosting-Firma schreibt eine Speicherbegrenzung von 100 MB für Anwendungspools vor (IIS 7.5).
Wie kann ich die Speichernutzung meiner ASP.NET-Anwendung genau bestimmen?
Um eine Art Basislinie zu schaffen, habe ich eine leere ASP.NET MVC 3-Anwendung mit einer einzigen Controller-Aktion erstellt, die ein String-Ergebnis zurückgibt.
Das Profiling dieser Anwendung mit ANTS führte zu folgenden Ergebnissen:
Generation 1 - 286.2KB
Generation 2 - 795.4KB
Large Object Heap - 75.63KB
Unused memory allocated to .NET - 1.323MB
Unmanaged - 26.78MB
Mein Problem ist, dass, wenn die Anwendungspoolbeschränkungen auf privaten Bytes basieren, eine leere ASP.NET MVC-Anwendung 33 MB der Poolressourcen verwendet. Daher meine MVC-Anwendung, die tatsächlich etwas tut (mit 93 MB) wird leicht über die "Grenze" gehen.
Wenn ich aber anrufe GC.GetTotalMemory
dann ist das Ergebnis 8 MB, was viel akzeptabler klingt.
Ich hatte absolut keinen Erfolg bei der Suche nach Benchmarks zum Testen, aber wenn eine leere MVC-Webanwendung tatsächlich 33 MB an Ressourcen verbraucht (das klingt übertrieben), dann scheinen die Beschränkungen, die mein Host auferlegt, völlig unrealistisch.
Vielen Dank! Ben