2009-01-21 7 views
12

Vielleicht kann jemand etwas Licht auf diese einfache Frage werfen:Warum sogar einen Anwendungspool recyceln?

Ich habe eine .NET Web-Anwendung, die gründlich überprüft wurde. Er lädt bei jedem Start einen Cache pro Anwendungsdomäne (Prozess) und kann Anfragen nicht vollständig beantworten, bis dieser Cache geladen ist.

Ich habe die Einstellungen in meinen Anwendungspools untersucht und habe mich gefragt, warum ich sogar so oft recycelt wurde (einmal alle 1.000.000 Anrufe oder 2 Stunden).

Was würde mich davon abhalten, Auto-Recycles so zu konfigurieren, dass sie alle 24 Stunden oder sogar länger ausgeführt werden? Warum nicht vollständig die Option entfernen und nur recyceln, wenn der Speicher für die Appdomain außer Kontrolle gerät?

Antwort

4

Der Grund, warum sie es tun ist, dass eine Anwendung "nicht funktioniert", obwohl es CPU und Speicher sind in Ordnung (Deadlock). Das App-Recycling ist eine abschließende Failsafe-Maßnahme, die fehlerhaften Code vor dem Absterben schützen kann.

Auch jeder Code, der IDisposable nicht implementieren konnte, würde Finalizer auf dem Recycling ausführen, die möglicherweise gehaltene Ressourcen freigeben.

6

Sie sollten wahrscheinlich Recycling aus der Sicht der Zuverlässigkeit betrachten. Basierend auf historischen Daten sollten Sie eine Vorstellung davon haben, wie viel Speicher, CPU usw. in Ihrer App verwendet werden und welche historischen Muster und wann Probleme auftreten. Wenn Sie das wissen, können Sie das Recycling konfigurieren, um diesen Problemen zu begegnen. Wenn Sie beispielsweise wissen, dass Ihre App ein zunehmendes Speicherauslastungsmuster * aufweist, das dazu führt, dass die App nach mehreren Tagen nicht mehr genügend Arbeitsspeicher zur Verfügung hat, können Sie sie so konfigurieren, dass sie wiederverwendet wird, bevor dies geschehen wäre.

* Natürlich würden Sie auch diesen Fehler beheben wollen, wenn möglich, aber Recycling zugeführt werden kann Zuverlässigkeit für die Kunden

8

Wenn Ihre Anwendung für mehr zuverlässig läuft erhöhen dann die Schwelle für die app-Pool Recycling gesetzt, dann erhöhen Sie auf jeden Fall den Schwellenwert. Es gibt keinen Nachteil, wenn Ihre App stabil ist.

Für uns haben wir das Recycling insgesamt deaktiviert und stattdessen eine Aufgabe, die jede Minute eine Testseite lädt und eine iisreset ausführt, wenn es fünf Mal hintereinander nicht geladen werden kann.

Verwandte Themen