Features des Windows-Prozessaktivierungsdiensts (WAS)

von Thomas Deml

Der Windows-Prozessaktivierungsdienst (WAS) von IIS 7 ist die Schlüsselkomponente, die Prozessmodell- und Konfigurationsfeatures für Webanwendungen und Webdienste bereitstellt... Die Hauptaufgabe des WAS ist die Verwaltung von Anwendungspools. Anwendungspools sind Konfigurationscontainer, die die Hostingumgebung für Gruppen von URLs darstellen.

Wenn ein HTTP-Client eine URL anfordert, ordnet HTTP.SYS die Anforderung einer Anforderungswarteschlange für den Anwendungspool zu. Ein Arbeitsprozess für die Anforderungswarteschlange des Anwendungspools wird vom WAS erstellt, und der Arbeitsprozess führt den Code aus, der zum Senden einer Antwort erforderlich ist. Eine der Hauptaufgaben des WAS besteht darin, die von ihm generierten Arbeitsprozesse zu verwalten, d. h. WAS überwacht ihre Integrität, verwendet sie bei Bedarf wieder und stellt sicher, dass keiner von ihnen mehr Ressourcen verbraucht als in der entsprechenden AppPool-Konfiguration angegeben. WAS ist auch der Vermittler und Sammeldienst für Laufzeit- und Zustandsdaten, z. B. Leistungsindikatoren, Standort- und Anwendungspoolstatus.

Architekturdiagramm

IIS 7.0 Architecture

Features des Prozessmodells

Die Unterstützung von 10000 oder mehr Websites, die auf demselben physischen Computer gehostet werden sollen, ist eine Kernanforderung für die heutigen Massenhostingumgebungen. Der Code, der auf diesen Websites ausgeführt wird, ist in der Regel nicht gut getestet, wenn überhaupt. Um diese Anforderungen zu unterstützen, muss der WAS ein leistungsfähiges Prozessmodell und ein effizientes Ressourcenmanagement bieten.

Effiziente Ressourcenverwaltung

Bedarfsgesteuerte Aktivierung

Ressourcen wie RAM und CPU sind in Szenarien mit mehreren Mandanten knapp. WAS startet einen IIS-Arbeitsprozess nur, wenn Anforderungen für eine bestimmte Website oder Webanwendung eingehen.

Leerlauftimeout

Da Ressourcen in der Regel knapp sind, kann WAS Webanwendungen basierend auf einem konfigurierbaren Leerlauftimeout herunterfahren.

Systemüberwachung

Um ihre Integrität zu gewährleisten, überwacht WAS die von ihm gestarteten Arbeitsprozesse. Integritätsmeldungen werden regelmäßig an jeden ausgeführten Arbeitsprozess gesendet. Wenn der Arbeitsprozess nicht in einem konfigurierbaren Zeitintervall reagiert, wird der Arbeitsprozess wiederverwendet oder beendet. Auf diese Weise werden unerkannte Deadlocks in Arbeitsprozessen automatisch behoben, indem der Arbeitsprozess neu gestartet wird.

Startlimit

Ein Teil des Features „Schneller Fehlerschutz“ ist das Startlimit. Wenn ein Arbeitsprozess nicht innerhalb des konfigurierbaren Startlimits an WAS zurückmeldet, wird er beendet und der Zähler für schnellen Fehlerschutz wird erhöht. Anwendungspools werden beendet, d. h. der Neustart des Arbeitsprozesses wird nicht mehr versucht, wenn der Zähler für schnellen Fehlerschutz innerhalb eines konfigurierbaren Zeitlimits ein konfigurierbares Limit erreicht. Dies verhindert Szenarien, in denen Arbeitsprozesse während des Starts hängen bleiben oder abstürzen.

Limit für das Herunterfahren

Ein Arbeitsprozess muss auch in einem konfigurierbaren Limit heruntergefahren werden. Wenn das Herunterfahren in dieser Zeit nicht geschieht, wird der Arbeitsprozess von WAS beendet. Dadurch wird die Ressourcenübernutzung aufgrund von Prozessen verhindert, die in ihrer Herunterfahrensphase hängen bleiben. Durch zusätzliche Einstellungen für das Herunterfahren kann eine ausführbare Datei gestartet werden (z. B. ein Debugger), wenn das Herunterfahren nicht innerhalb der vorgesehenen Zeit abgeschlossen wird.

CPU-Affinität

Mit Konfigurationseinstellungen kann WAS Arbeitsprozesse starten, die in einer oder mehreren CPUs zusammengefasst sind. Dadurch wird verhindert, dass Mandanten sich gegenseitig stören, wenn sie denselben physischen Computer nutzen.

Benutzerprofil

WAS kann Arbeitsprozesse mit oder ohne Laden des Benutzerprofils starten.

Sicherheit

Anwendungspoolidentität

IIS-Arbeitsprozesse können als benutzerdefiniertes Konto, integriertes Konto (LocalService, LocalSystem, NetworkService) oder Anwendungspoolidentität (Standard) ausgeführt werden. Die Verwendung der Anwendungspoolidentität wird empfohlen, da keine Kennwortverwaltung erforderlich ist und Anwendungspoolidentitäten bereits dem Prinzip der geringsten Berechtigungen unterliegen. Integrierte Konten erfordern auch keine Kennwortverwaltung. Wenn eine benutzerdefinierte Benutzeridentität verwendet wird, wird das Kennwort automatisch verschlüsselt. Konfigurationseinstellungen können auf mehrere Computer repliziert werden, indem sie die Konfigurationsverschlüsselungsschlüssel auf allen Computern freigeben.

Features des Auftragsobjekts

Auftragsobjekte ermöglichen Administratoren das Einschränken von Arbeitsprozessen auf ein bestimmtes CPU-Limit. Eine konfigurierbare Aktion wird ausgeführt, wenn dieses CPU-Limit überschritten wird. Auftragsobjekte stellen außerdem sicher, dass Prozesse, die vom Arbeitsprozess abgerufen werden, beendet werden.

Konfigurationsisolation und Sicherheit

Bevor WAS einen Anwendungspool und seinen Arbeitsprozess startet, generiert es eine eindeutige Konfigurationsdatei für diesen Anwendungspool. Anwendungspools verfügen außerdem über Konfigurationseinstellungen zum Ausführen von Anwendungspools unter eindeutigen Identitäten. Isolation kann jedoch auch dann erreicht werden, wenn dieselbe Identität verwendet wird. WAS erstellt eine eindeutige Sicherheits-ID (SID) für jeden Anwendungspool. Die Konfigurationsdatei des Anwendungspools wird dann mit dieser eindeutigen SID gesichert. Dadurch wird sichergestellt, dass Anwendungspoolkonfigurationsdateien nur von Administratoren und dem Anwendungspool selbst gelesen werden können. Sogar Dateiberechtigungen können mithilfe dieser eindeutigen SID konfiguriert werden.

Diagnose und Überwachung

Ereignisprotokollierung

Ereignisse bezüglich ungültiger Konfiguration, Recycling, Start oder Herunterfahren von Arbeitsprozessen werden dem Systemereignisprotokoll gemeldet.

Anforderungen werden aktuell ausgeführt

WAS macht eine Laufzeit- und Zustandssteuerungsschnittstelle verfügbar, über die Skripts und Tools die aktuell ausgeführten Anforderungen eines bestimmten Arbeitsprozesses abfragen können. Dies ist nützlich, um Anforderungen zu finden, die hängen geblieben sind, oder Anforderungen, die sehr lange brauchen, bis sie abgeschlossen sind.

Leistungsindikatoren

Alle IIS-Leistungszähler werden durch WAS geleitet. WAS sammelt diese Leistungsindikatoren, da IIS-Leistungsindikatoren websitebasiert sind und Webanwendungen in verschiedenen Anwendungspools leben können.

Recycling

Das Recycling ermöglicht die Aktualisierung von Arbeitsprozessen, ohne eine einzelne Anforderung aufgrund von Ausfallzeit zu verlieren. Dies erfolgt über ein Feature namens „überlappendes Recycling“.

Überlappendes Recycling

WAS tut dies, indem es parallel zu dem alten Prozess, der noch Anfragen bearbeitet, einen neuen Arbeitsprozess startet. Sobald der neue Arbeitsprozess eingerichtet ist, beginnt er mit der Abholung von Anforderungen aus der Anforderungswarteschlange, während der alte Arbeitsprozess von WAS angewiesen wird, die Abholung von Anforderungen zu beenden. Sobald der alte Arbeitsprozess abgeschlossen ist, werden alle ausgeführten Anforderungen beendet. Dieses Feature wird als „überlappendes Recycling“ bezeichnet. Dadurch wird sichergestellt, dass während eines Wiederverwendungsvorgangs keine Anforderungen verloren gehen.

Recyclingkonfiguration

Recyclingparameter sind im IIS-Konfigurationssystem konfigurierbar.

Geplantes Recycling

Kunden möchten ihre Anwendungen möglicherweise basierend auf einem regelmäßigen Zeitplan recyceln. Das Recycling von Konfigurationseinstellungen kann regelmäßig geplant werden, z. B. alle 4 Stunden, jeden Tag um 1 Uhr usw.

Recycling basierend auf Speicherverbrauch

Anwendungen können mit der Zeit Speicherplatz verlieren. WAS kann den Arbeitsspeicherverbrauch der einzelnen Arbeitsprozesse überwachen, um sicherzustellen, dass kein Arbeitsprozess mehr als sein vorkonfiguriertes Limit verwendet. Wenn ein konfigurierter virtueller oder privater Speicherschwellenwert erreicht wird, wird das Recycling eines Arbeitsprozesses ausgelöst.

Recycling basierend auf der Anzahl der Anforderungen

Das Recycling kann auch basierend auf der Anzahl der Anforderungen konfiguriert werden, die ein bestimmter Arbeitsprozess verarbeitet hat.

Benutzerdefiniertes Recycling

Benutzerdefinierter Code kann benutzerdefinierte Integritätsstatistiken auslösen und ein Recycling über einen API-Aufruf der WAS-Laufzeit- und Zustands-API auslösen.

Prozessverwaisung

Einige Fehler treten nur in einer Produktionsumgebung auf. Das Beenden von Arbeitsprozessen sichert zwar die Betriebszeit, aber die Fehlersuche wird dadurch erschwert, z. B. wenn der ausgefallene Arbeitsprozess debuggt werden muss. Mit dem Prozessverwaisungsfeature in WAS können Arbeitsprozesse wiederverwendet werden, ohne den fehlgeschlagenen Arbeitsprozess zu töten. Jetzt kann ein Debugger angefügt werden. Zusätzliche Prozessverwaisungseinstellungen ermöglichen die Ausführung eines Prozesses (z. B. eines Debuggers), wenn Verwaisung stattfindet.

Verwaltung des Anwendungspoolstatus

Anwendungspools können über öffentlich verfügbare APIs beendet, wiederverwendet oder gestartet werden, z. B. wenn eine Anwendung offline genommen werden muss oder das Recycling auf der Grundlage von Parametern durchgeführt werden muss, die sich von den in der Datei „applicationhost.config“ konfigurierbaren Parametern unterscheiden.

Zusätzliche WAS-Features

Features für Lastenausgleich

HTTP.SYS lauscht weiterhin im Netzwerk und gibt eine 500 HTTP-Fehlermeldung zurück, wenn Anforderungen nicht von einem Anwendungspool aufgenommen werden. Dies ist ein Problem, da bei einem Lastenausgleich der Ebene 5 (TCP/IP) ein 500 HTTP-Fehler wie eine gültige TCP/IP-Verbindung aussieht. Eine WAS-Konfigurationseinstellung kann es HTTP.SYS ermöglichen, Verbindungen abzulehnen, anstatt HTTP-Antworten zu senden.

WAS kann so konfiguriert werden, dass Arbeitsprozesse mit den folgenden Einstellungen gestartet werden:

WoW64-Unterstützung

WAS kann 32-Bit- oder 64-Bit-Arbeitsprozesse starten.

.NET-Framework im Voraus laden

WAS kann so konfiguriert werden, dass eine bestimmte Version von .NET Framework im Voraus geladen wird. Dies kann die Problembehandlung von Versionskonflikten erheblich vereinfachen.

Web Gardens

Ein Web Garden ist die Bezeichnung für einen Anwendungspool, der mit mehreren Arbeitsprozessen ausgeführt wird. Anforderungen werden mithilfe eines Roundrobin-Mechanismus unter diesen Arbeitsprozessinstanzen verteilt.

Unterstützung mehrerer WAS-Protokolle

WAS hostet nicht nur den HTTP-Stapel. Er kann auch andere Protokolle über den Listenadapter und das Arbeitsprozessframework hosten. WCF-Dienste nutzen die Unterstützung für mehrere WAS-Protokolle. WCF-Protokolle enthalten eigene Listener (z. B. den NET. TCP-, NET. MSMQ- oder NET. PIPE-Listener). Diese Listener stellen mithilfe der Listeneradapterschnittstellen eine Verbindung mit WAS her.

Anwendungsprotokolle, die diese Infrastruktur nutzen, können benutzerdefinierten Anwendungscode in derselben .NET-Anwendungsdomäne wie normale ASP.NET-Anwendungen hosten. Sie können auch die protokollunabhängigen Dienste nutzen, die die ASP.NET-Hostingumgebung bietet, z. B. On-Demand-Kompilierung, Konfigurationsunterstützung usw.