
Ich habe eine Site, die in letzter Zeit aufgrund der maximalen Speicherauslastung häufig ausgefallen ist. Wir betreiben einen VPS mit 8 GB RAM, Windows Server 2008 R2, IIS 7.5, WebForms 4.0-Site mit SQL Express auf demselben Server. Normalerweise liegt die RAM-Auslastung deutlich unter 2 GB. Ich habe sie einmal in Aktion erwischt, als sie schnell hochgefahren wurde, um den RAM zu maximieren, und dann plötzlich abfiel.
Wir haben seitdem ein paar Dinge geändert und seit ein paar Tagen läuft alles einwandfrei, also ist das Problem vielleicht behoben. Ich habe jedoch auch begonnen, Informationen über den Leistungsindikator zu protokollieren. Ich habe festgestellt, dass die Gesamtzahl der Anfragen in IIS langsam anstieg, dann aber plötzlich abfiel. Der RAM entsprach jedoch nicht einer langsamen Zunahme. (Die blaue Linie ist der RAM, die violette Linie die Gesamtzahl der Anfragen.)
Was würde dazu führen, dass diese Anfrage ansteigt und wie kann ich das Problem lösen? Wiederverwendung des App-Pools? Wie begrenzen Sie die Länge der Anfragen, damit es zu einer Zeitüberschreitung kommt und ist das der richtige Ansatz?
Antwort1
Welcher Zähler für die Gesamtzahl der Anfragen? Schon der Name sagt, dass „Total Requests“ die Gesamtzahl der Anfragen ist, die von dieser App bearbeitet werden.
Es wird also immer nur wachsen.
Der Zähler wird wahrscheinlich entweder durch eine AppDomain-Wiederverwendung (innerhalb des Prozesses) oder eine App Pool-Wiederverwendung (Beendigung des w3wp-Prozesses) zurückgesetzt.
Allgemeine Ratschläge:
- nicht mit Kompilierung ausführen debug=true
- Erwägen Sie das Festlegen eines speicherbasierten Recycling-Triggers für den App-Pool
- Wenn die RAM-Nutzung zu hoch ist, sollten Sie einen 32-Bit-Anwendungspool verwenden, um die Speichernutzung auf natürliche Weise auf 4 GB oder weniger zu beschränken (so dass Ausreißer weniger problematisch sind: Ein Prozess, der abstürzt, wenn er sein natürliches Speicherlimit von 4 GB erreicht, ist leichter zu bewältigen als ein Prozess, der 4 GB für einen Rundungsfehler hält).