fragen stichworte

Durch die Wiederverwendung von Speicherpool-App-Pools wird die Ausführung von Anforderungen beendet

Ich habe einen WCF-Dienst, dessen Speicher möglicherweise zunimmt. Ich setze ein Speicherlimit für die privaten Bytes ein, um den App-Pool nach 500 m Speicherplatz zu recyceln. Ich habe festgestellt, dass mein w3wp.exe-Prozess 600megs erreichen kann, wenn er sich zum Recyceln entscheidet und alle derzeit ausgeführten Clientanforderungen einen Kommunikationsfehler erhalten. Gibt es eine Möglichkeit, mit iis zu warten, bis Anforderungen abgeschlossen sind, bevor der Prozess recycelt wird?

antworten

Recycling beendet einen Prozess, wenn bestimmte Bedingungen erreicht sind, und ersetzt ihn durch einen anderen.

In schrecklichen Analogien ist es ein bisschen so, als würde man sicherstellen, dass die Größe eines Ballons immer nur ein Quadratmeter groß sein kann, wenn die Stifte in einer Ein-Fuß-Kugel angeordnet sind. Wenn der Ballon das Limit erreicht, erscheint er und Sie Ersetzen Sie es durch ein neues.

Prozesse, die recycelt werden, erreichen das {Herunterfahren-Zeitlimit}, um sich von dem Punkt, an dem sie recycelt werden sollen, abzuschalten.

Wenn sie ihre Arbeit in dieser Zeit nicht beenden können (90 Sekunden Standardeinstellung), ist es das.

Wenn Sie einen WCF-Host mit einer dauerhaften Verbindung verwenden, ist die Antwort meiner Meinung nach nein. die antwort ist aber auch "wähle größere grenzen". Was Sie als Ihre Richtlinie bezeichnet haben, lautet: "Ich möchte, dass meine App stirbt, wenn sie 500 MB erreicht." Aber die App selbst kennt diese Grenze nicht. Es ist nur der Versuch, so zu wachsen, wie es nötig ist.

Laden Sie Ihre App ohne Einschränkungen. sehen, worauf es ankommt und was auf ein Leck hindeuten könnte; eingestellte Grenzwerte an der Stelle, an der ein Leck angezeigt wird.