Laden...

ASP.net MVC 3 Speicherverbrauch

Erstellt von M@TUK vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.314 Views
M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 12 Jahren
ASP.net MVC 3 Speicherverbrauch

Hi...

Ich hab hier einen Webshop der mit ASP.net MVC3 (Razor) entwickelt wurde.

MSSQL 2008 R2 express
LinqToSQL
Unity (IOC-Container)

Ich vermute hier nun ein kleines Ressourcen-Problem,
bzw. weiss ich nicht genau obs überhaupt eins ist.

Für den Webshop ist ein eigener AppPool eingerichtet. (integrated)
Wenn ich die w3wp.exe im Task-Manager verfolge
liegt der verwendete Arbeitsspeicher nach dem Start bei 130-150 MB
geht aber dann je nach Last auf bis zu 700 MB!! hoch.
Im Durchschnitt werden so 550-600MB verwendet.

Im Ressourcen-Monitor sehe ich dass bei CPU ca 100 Threads stehen.
Die CPU-Last liegt aber immer bei ca. 20-30% (VServer).

Nun die Frage(n)...
Kann/darf der Speicherverbrauch derart hoch sein bzw.
wie hoch liegt er normalerweise bei etwas komplexeren Webseiten?
Das selbe bei den CPU-Threads der w3wp.exe?

Wenn das alles viel niedriger sein sollte, woran könnte es liegen?

thx,
M@TUK

16.834 Beiträge seit 2008
vor 12 Jahren

Hallo,

das kann schon sein.
Meine Anwendung hat durchaus in Stoßzeiten >1GB RAM-belegung, wenn dementsprechend viele User drauf zugreifen und damit arbeiten (automatische Generierung von Betriebssystem-ständen). Threads sind im Idle bei 10 seh ich gerade, Last-Betrieb deutlich >100.Ich nutze PFX und lasse das System alles bearbeiten; mit jeder Ressource, die verfügbar ist. Aber das ist auch alles sehr Ressourcen-fressend (Imaging, Copy....). Also ein Webshop sollte da weit weg von sein.

Was ich aber komisch finde, ist die dauernde Belastung der CPU. Lass einfach mal ein Profiler drüber laufen, dann weißt Du woran das liegt.
Aber: der RAM ist dafür da, genutzt zu werden!

Was bei einer MVC Anwendung RAM braucht:
* Jede View, die das erste Mal geladen wurde, liegt anschließend vorkompiliert im RAM
* Connection Management von Linq
* Alle statischen Ressourcen ( wenn nicht anders in der Webconfig definiert )
* Alle dynamischen Kompressionen inkl Platzhalter für den dynamischen Content
* Sessions liegen meist als Kopie zum SessionProvider zusätzlich im RAM

M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 12 Jahren

Hi Abt...

danke für deine Infos...

Ich glaube auch dass es eventuell niedriger sein könnte.
Aber ich habe jetzt keine gravierenden Performance-Probleme deswegen.
Wobei mich aber jetzt schon beruhigt dass bei dir
durchaus > 1GB vorkommen können. Und nicht
eine Meldung à la "bei über 50MB is wo gewaltig der wurm drinnen"...

Das mit der dauernden CPU-Last kommt durch den VServer...
Der hatte bereits ein "Hintergrund-Rauschen" als wir ihn bekommen haben.
Und da war weder SQL-Server noch IIS installiert...

16.834 Beiträge seit 2008
vor 12 Jahren

Nein, alles in Ordnung. Ich meine, dass sich der AppPool beim Start schon knapp 80MB nimmt.

Seitdem ich PFX/PLINQ integriert habe, ist mein Speicherbedarf ( wahrscheinlich durch die manuelle Threadverwaltung enstanden ) deutlich gesunken. Es gab Zeiten, als morgens die Synchronisation zwischen Ablage und Datenbank durchlief, die CPU bei 15% war aber der RAM bei ~2GB. Dafür nutzt PFX/PLINQ die CPU- und RAM-Ressourcen nun "optimal" und das Verhältnis ist gekippt: CPU am Anschlag, RAM morgens ~1.5GB und der Durchlauf knapp 40% schneller.

Aber ne große Webanwendung darf eben auch etwas Ressourcen verwenden - dafür sinds sie da 😃