Wie kann der der IIS .NET-Anwendung zugewiesene Speicher erhöht werden?

8

Wir verwenden Windows 2008 R2 und IIS 7, die unter Amazon EC2 ausgeführt werden. IIS führt eine einzelne in C # geschriebene .NET-Anwendung aus.

Wir haben Leistungsprobleme und ich möchte der Anwendung mehr Speicher geben, kann aber nicht herausfinden, wie das geht. Wie steuere ich die Speichermenge, die die CLR erhält?

Ich bin ein absoluter Neuling mit IIS, .NET und der CLR. Wenn ich mit Java arbeiten würde, würde ich nur das Flag -Xmx verwenden, um den für die JVM verfügbaren Speicher zu erhöhen (z. B. -Xmx3000m für 3 GB). Aber ich kann nicht herausfinden, wie das in der Windows-Welt geht.

Mark Hansen
quelle

Antworten:

8

Die im Anwendungspool für die Webanwendung gehostete CLR erfasst so viel Speicher wie erforderlich und verwendet dann je nach Speicherbedarf die Speicherbereinigung nach Bedarf, um Speicher freizugeben.

Sie können die Speichermenge begrenzen, auf die ein Anwendungspool zugreifen kann (in der Benutzeroberfläche, über das Dialogfeld "Erweiterte Einstellungen" oder über PowerShell und das WebAdministration-Modul).

Möglicherweise möchten Sie überprüfen, ob für den Speicher im Anwendungspool bereits Obergrenzen festgelegt sind. Es gibt jedoch keine Möglichkeit, mehr Speicher direkt einem App-Pool zuzuweisen, ohne die Datei machine.config für die von der App ausgeführte .NET-Version zu bearbeiten unter.

BEARBEITEN: Die standardmäßige automatische Konfiguration für Speicherkappen in IIS 7 beträgt 60 Prozent des Arbeitsspeichers des Computers. Dies kann manuell erhöht werden, indem Sie die Datei machine.config für die .NET-Version bearbeiten, unter der Ihre Anwendung ausgeführt wird. Details zu den verschiedenen Konfigurationseinstellungen hier.

Steven Murawski
quelle
Danke Steven. Beim Betrachten des Leistungsmonitors scheint jedoch jeder Arbeitsprozess im Anwendungspool auf 1 GB Arbeitsspeicher begrenzt zu sein. Ist das korrekt?
Mark Hansen
Dies hängt von den Einstellungen im App-Pool, der RAM-Größe auf dem Server und / oder dem Speicherdruck anderer Anwendungen ab. Standardmäßig gibt es keine Obergrenzen für die Speichernutzung. Ich hatte App-Pools mit 2 oder 3 Gig Speicher.
Steven Murawski
Wie viel Speicher ist Ihrer VM zugeordnet? Wie groß ist Ihre Auslagerungsdatei? Wird viel in die Auslagerungsdatei gewechselt? Ist RAM der Engpass für Ihre Anwendung oder könnte es ein Prozessor sein? Die Anzahl der logischen Prozessoren kann sich auf die Anzahl der Anforderungen auswirken, die ein IIS-Prozess verarbeiten kann.
Steven Murawski
Ich habe einige zusätzliche Informationen hinzugefügt, wo Sie die Speicherobergrenze anpassen können (standardmäßig sind es 60 Prozent des Maschinenspeichers). Aber ich würde auch sicherstellen, dass dies Ihr Engpass ist.
Steven Murawski