Speicherwiederverwendung

07/03/2008 - 15:41 von Jan | Report spam
Hallo!

Auf meinem IIS6 auf Win2003 Svr SP2, làuft eine Anwendung, wie immer mal
wieder Ärger macht.
Die Anwendung basiert auf klassischem ASP und greift über ADO auf eine
Access-Datenbank zu. Ist halt eine àltere Software.

Diese Anwendung zwingt nun immer mal wieder den gesamten Webserver in die
Knie: Zunàchst funktioniert ASP nicht mehr (HTTP aber doch), dann stirbt
der ganze Server. Ich habe beobachtet, das im Vorfeld der Speicherverbrauch
immer starkt ansteigt, vermutlich greifen dann sehr viele Benutzer
gleichzeitig
auf die Anwendung zu.

Daher habe ich die verschiedenen Instanzen der Anwendung erstmal auf mehrere
Application Pools verteilt und die Wiederverwendung der Arbeitsprozesse
in bestimmten Zeitabstànden konfiguriert. Das reduziert die Ausfàlle
drastisch, aber es kommt dennoch immer mal wieder vor.

Da ich vermute, das die Abstürze auftreten, wenn ein w3wp-Prozess sehr groß
wird, habe ich unter "Speicherwiederverwendung" den maximalen Speicher auf 30
MB festgelegt, das soll den Server vor schnell anschwellenden Prozessen
schützen.

Auf einem lokalen Testserver habe ich aber beobachtet, das es teilweise eine
Minute und lànger dauert, bis der Prozess wiederverwendet wird, nachdem der
das
Speicherlimit überschritten hat. Die Zeit reicht, um den Arbeitsprozess
dreimal größer werden zu lassen, als er dürfte.

Nun hatte ich gehofft, das mit den Einstellungen unter "Zustand", also
"Arbeitsprozess pingen" und "Zeitlimit für das Herunterfahren" konfigurieren
zu können, aber selbst sehr kurze Einstellungen scheinen die Reaktionszeiten
bis zur Neuerstellung des Prozesses nicht zu beeinflussen.

Weiß jemand, wie man die Reaktionszeit des Servers verkürzen kann? Oder hat
sonst einen Tip, wie die Stabilitàt des Servers erhöht werden könnte?

Viele Grüße

Jan
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
07/03/2008 - 19:05 | Warnen spam
Hallo Jan,

"Jan" schrieb:

Ich habe beobachtet, das im Vorfeld der Speicherverbrauch immer starkt
ansteigt, vermutlich greifen dann sehr viele Benutzer gleichzeitig
auf die Anwendung zu.



ich tippe mal ins Blaue hinein: Ihr erstellt Objekte, die ihr nicht wieder
schließt und/oder terminiert. Also bspw. sowas:

<%
Dim Connection
Set Connection = Server.CreateObject( "ADODB.Connection" )

Dim Recordset
Set Recordset = Server.CreateObject( "ADODB.Recordset" )

MachWas()
%>

Da fehlen dann aber 4 wichtige Sachen

<%
Recordset.Close()
Set Recordset = Nothing

Connection.Close()
Set Connection = Nothing
%>

Das ist mit allen anderen Objekten aber genauso. Objekte müssen _immer_
terminiert werden, ansonsten führt das über kurz oder lang zu dem von dir
beschriebenen Effekt.

Da ich vermute, das die Abstà¼rze auftreten, wenn ein w3wp-Prozess sehr groàŸ
wird, habe ich unter "Speicherwiederverwendung" den maximalen Speicher auf 30
MB festgelegt, das soll den Server vor schnell anschwellenden Prozessen
schà¼tzen.



Ob das zielführend ist sei mal dahingestellt.

WeiàŸ jemand, wie man die Reaktionszeit des Servers verkà¼rzen kann? Oder hat
sonst einen Tip, wie die Stabilità¤t des Servers erhöht werden könnte?



Ist das eigentliche eine Anwendung von euch? Làuft da nur die eine Anwendung
oder "alles mögliche"?

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen