wake-up-neo.net

Was ist der Unterschied zwischen DefaultAppPool und Classic .NET AppPool in IIS7?

Ich habe ein Problem mit Timeouts in IIS. In der web.config wurde das Sitzungszeitlimit auf 60 Minuten eingestellt, aber nach 20 Minuten endet die Sitzung.

Dieses Problem tritt nur in IIS7 und nicht in IIS5 auf.

Nach einigen Nachforschungen stellte ich fest, dass es am Timeout des Anwendungspools lag. Wenn der App-Pool 20 Minuten lang ohne Aktion verbleibt, beendet IIS die Sitzung.

Wenn die Anwendung den defaultAppPool verwendet, geschieht dies immer, aber wenn ich den App-Pool in den klassischen .NET-App-Pool ändere, tritt keine Zeitüberschreitung auf.

Beide Modi haben ein Leerlaufzeitlimit, aber nur im DefaultAppPool tritt dies auf.

  • Warum ist das?
  • Was ist der Unterschied zwischen einem Classic .NET AppPool und einem DefaultAppPool?
  • Was ist der Unterschied in der Pipeline zwischen Classic und Integrated?
50
Alvaro

IIS7 hat einige wichtige Änderungen vorgenommen, um WCF besser zu unterstützen. Eines der wichtigsten Elemente ist der neue integrierte Anwendungspool. In dieser Sitzung von PDC werden einige dieser Herausforderungen im Hinblick auf eine bessere Leistung von WCF-Diensten erörtert: http://channel9.msdn.com/pdc2008/TL38/

Diese Seite bietet einen guten Überblick über die IIS7-Architektur: http://learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/ . Im Folgenden sind einige der wichtigsten Informationen aus diesem Artikel zum Zweck der beiden verschiedenen Arten von App-Pools aufgeführt:

Integrierter Anwendungspoolmodus

Wenn sich ein Anwendungspool im integrierten Modus befindet, können Sie die integrierte Anforderungsverarbeitungsarchitektur von IIS und ASP.NET nutzen. Wenn ein Arbeitsprozess in einem Anwendungspool eine Anforderung empfängt, durchläuft die Anforderung eine geordnete Liste von Ereignissen. Jedes Ereignis ruft die erforderlichen systemeigenen und verwalteten Module auf, um Teile der Anforderung zu verarbeiten und die Antwort zu generieren. Das Ausführen von Anwendungspools im integrierten Modus bietet mehrere Vorteile. Zunächst werden die Anforderungsverarbeitungsmodelle von IIS und ASP.NET in ein einheitliches Prozessmodell integriert. Dieses Modell beseitigt Schritte, die zuvor in IIS und ASP.NET dupliziert wurden, z. B. die Authentifizierung. Darüber hinaus ermöglicht der integrierte Modus die Verfügbarkeit verwalteter Funktionen für alle Inhaltstypen.

Klassischer Anwendungspoolmodus

Wenn sich ein Anwendungspool im klassischen Modus befindet, verarbeitet IIS 7.0 Anforderungen wie im Arbeitsprozess-Isolationsmodus IIS 6.0. ASP.NET-Anforderungen durchlaufen zunächst systemeigene Verarbeitungsschritte in IIS und werden dann zur Verarbeitung von verwaltetem Code in der verwalteten Laufzeit an Aspnet_isapi.dll weitergeleitet. Schließlich wird die Anforderung über IIS zurückgeleitet, um die Antwort zu senden. Diese Trennung der Anforderungsverarbeitungsmodelle IIS und ASP.NET führt zu einer Verdoppelung einiger Verarbeitungsschritte, z. B. Authentifizierung und Autorisierung. Darüber hinaus stehen Funktionen für verwalteten Code, z. B. Formularauthentifizierung, nur für ASP.NET-Anwendungen oder Anwendungen zur Verfügung, für die Sie alle Anforderungen per Skript zugeordnet haben, die von aspnet_isapi.dll verarbeitet werden sollen. Testen Sie Ihre vorhandenen Anwendungen auf Kompatibilität im integrierten Modus, bevor Sie eine Produktionsumgebung auf IIS 7.0 aktualisieren und Anwendungen im integrierten Modus Anwendungspools zuweisen. Sie sollten eine Anwendung nur dann zu einem Anwendungspool im klassischen Modus hinzufügen, wenn die Anwendung im integrierten Modus nicht funktioniert. Beispielsweise kann Ihre Anwendung von einem Authentifizierungstoken abhängig sein, das von IIS an die verwaltete Laufzeit übergeben wird, und aufgrund der neuen Architektur in IIS 7.0 bricht der Prozess Ihre Anwendung.

57
Tim Clem

Der klassische Pool verarbeitet die Anforderungen im App-Pool mithilfe separater Verarbeitungs-Pipelines für IIS und ISAPI. Integriert verwendet eine integrierte Pipeline. IIS und ASP.NET a ( Bessere Leistung) nutzt die verbesserten Funktionen von IIS 7.0 unter Verwendung nur eines Prozesses. Es empfiehlt sich, für jede Anwendung einen neuen Anwendungspool zu erstellen und dann entsprechend den Anwendungsanforderungen separat zu konfigurieren.


Klassischer Modus führt die folgenden Schritte aus:

1.Die eingehende HTTP-Anfrage wird über den IIS Core empfangen.

2. Die Anforderung wird über ISAPI verarbeitet.

3. Die Anforderung wird über ASP.NET verarbeitet.

4.Die Anforderung wird über ISAPI zurückgegeben.

5.Die Anforderung wird durch den IIS Core zurückgegeben, wo die HTTP-Antwort schließlich zugestellt wird


Integrierter Modus verwendet:

1.Die eingehende HTTP-Anforderung wird über den IIS Core und ASP.NET empfangen.

2.Der entsprechende Handler führt die Anforderung aus und liefert die HTTP-Antwort

Erhöhen Sie das Sitzungszeitlimit in web.config gemäß

denken Sie daran, wenn Sie dies erhöhen, verbraucht die Anwendung mehr Ressourcen, z. B. Speicher

4
Stuart

Ich denke, Ihre Frage hat die Antwort. IIS 6 und 7 haben ein Konzept des Anwendungspool-Timeouts, das sich vom Sitzungs-Timeout unterscheidet.

Was ist der Unterschied zwischen den Modi ... bereits angesprochen. Ich bin mir nicht sicher, wie sich Ihre Fragen zu Pipelines und die Unterschiede in den Modi auf Ihr Problem auswirken - die Zeitüberschreitungen.

Eine Perspektive: Inaktive Zeitüberschreitung tritt auf einer Website mit keinem Datenverkehr auf. Wahrscheinlich haben Sie ein Problem, das nur bei einer QS-Site oder Ihrer Entwickler-Box auftritt. Die Einstellung für das Zeitlimit für Leerlauf ist vorhanden, um Ressourcen auf Ihrer Entwickler-Box und Hosting-Unternehmen mit 5 USD/Monat und vielen nicht ausreichend genutzten Websites (z. B. meinem Blog) zu sparen. Wahrscheinlich möchten Sie keine Zeitüberschreitung bei Inaktivität auf einer öffentlichen Site.

Sitzungs-Timeout - Wird in der Webkonfiguration festgelegt, wenn ein Benutzer den Server nicht erreicht, wird die Sitzungszeit überschritten.

Zeitüberschreitung bei Inaktivität Niemand berührt den Webserver für 20 Minuten. Fahren Sie ihn herunter, um Ressourcen zu sparen. In IIS 6 befindet sich dies auf der Registerkarte Leistung des App-Pools - und ist leicht zu deaktivieren. In IIS 7 können Sie in den erweiterten Einstellungen des Anwendungspools oder im processModel-Element festlegen. Ich führe nicht so viele IIS 7 als IIS 6 aus, aber es sieht so aus, als würde das Entfernen des Elements aus der Datei web.config oder das Setzen auf 0 zu einem unendlichen Zeitlimit für Leerlauf führen.

2
Precipitous

Der DefaultAppPool ignoriert die Einstellungen für das Sitzungszeitlimit in web.config, ASPNet App Pool verwendet jedoch die Einstellungen in web.config.

0
Jeff