ASP Tipp 9: Eine prozessexterne Ausführung gibt der Leistung auf Kosten der Zuverlässigkeit den Vorzug
Sowohl ASP als auch MTS/COM+ enthalten Konfigurationsoptionen, mit denen Sie einen Kompromiss zwischen Zuverlässigkeit und Leistung erzielen. Sie müssen sich beim Erstellen und Bereitstellen Ihrer Anwendung über diese Kompromisse im Klaren sein.
ASP-Optionen
Sie können ASP-Anwendungen so konfigurieren, dass sie auf eine von drei Arten ausgeführt werden. In IIS 5.0 wurde der Begriff „Isolationsstufe“ zum Beschreiben dieser Optionen eingeführt. Es gibt drei Werte für die Isolationsstufe: Niedrig, Mittel und Hoch:
- Niedrige Isolation. Diese Option ist die schnellste und wird in allen Versionen von IIS unterstützt. Sie führt ASP in Inetinfo.exe, dem primären IIS-Prozess, aus. Wenn die ASP-Anwendung abstürzt, stürzt auch IIS ab. (Um IIS unter IIS 4.0 neu zu starten, überwachen Webmaster die Site mit Tools, wie z. B. InetMon, und lösen Stapeldateien aus, um einen ausgefallenen Server neu zu starten. In IIS 5.0 wird ein zuverlässiger Neustart eingeführt, der einen ausgefallenen Server automatisch neu startet.)
- Mittlere Isolation. Diese neue Stufe wird in IIS 5.0 eingeführt. Sie wird auch als prozessexterne Stufe bezeichnet, da ASP außerhalb des IIS-Prozess ausgeführt wird. Bei der mittleren Isolation ist allen ASP-Anwendungen, die laut Konfiguration mit einer mittleren Isolationsstufe ausgeführt werden, der gleiche Prozessbereich gemeinsam. Dadurch werden zum Ausführen von mehreren prozessexternen ASP-Anwendungen in einem Feld weniger Prozesse benötigt. Mittel ist die Standardisolationsstufe in IIS 5.0.
- Hohe Isolation. Die in IIS 4.0 und IIS 5.0 unterstützte hohe Isolation ist ebenfalls prozessextern. Sollte ASP abstürzen, stürzt der Webserver nicht gleichzeitig ab. Die ASP-Anwendung wird bei der nächsten ASP-Anfrage automatisch neu gestartet. Bei der hohen Isolation wird jede ASP-Anwendung, die laut Konfiguration mit einer hohen Isolationsstufe ausgeführt wird, in ihrem eigenen Prozessbereich ausgeführt. Dadurch werden ASP-Anwendungen voneinander geschätzt. Der Nachteil ist, dass für jede ASP-Anwendung ein separater Prozess nötig ist. Wenn Dutzende von Anwendungen das gleiche Feld als Host verwenden, kann sich der Aufwand wesentlich erhöhen.
Welche Option ist die Beste? In IIS 4.0 hatten prozessexterne Ausführungen starke Leistungseinbußen zur Folge. In IIS 5.0 haben wir uns bemüht, die Kosten einer prozessexternen Ausführung von ASP-Anwendungen zu minimieren. In den meisten Tests liefen prozessexterne ASP-Anwendungen in IIS 5.0 schneller als prozessinterne Anwendungen in IIS 4.0. Unabhängig davon bietet eine prozessinterne Ausführung (niedrige Isolationsstufe) auf beiden Plattformen auch weiterhin die beste Leistung. Eine niedrige Isolationsstufe bringt aber nicht besonders viele Vorteile, wenn die Trefferrate oder der maximale Durchsatz relativ niedrig sind. Aus diesem Grund sollten Sie die niedrige Isolationsstufe erst benötigen, wenn pro Webserver mehrere Tausend Seiten pro Sekunden benötigt werden. Testen Sie die verschiedenen Optionen für mehrere Konfigurationen, um herauszufinden, welche Kompromisse Sie einzugehen bereit sind.
Anmerkung Wenn Sie ASP-Anwendungen prozessextern (mit mittlerer oder hoher Isolation) ausführen, werden Sie in MTS auf NT4 und COM+ auf Windows 2000 ausgeführt, d. h. auf NT4 werden sie in Mtx.exe und auf Windows 2000 in DllHost.exe ausgeführt. Die Ausführung dieser Prozesse ist im Task-Manager zu sehen. Sie können auch sehen, wie IIS MTS-Pakete oder COM+-Anwendungen für prozessexterne ASP-Anwendungen konfiguriert.
COM-Optionen
Für COM-Komponenten gibt es ebenfalls drei Konfigurationsoptionen, die den ASP-Optionen jedoch nicht genau entsprechen. Für COM-Komponenten gibt es folgende Optionen: unkonfiguriert, als Bibliotheksanwendungen konfiguriert oder als Serveranwendungen konfiguriert. Unkonfiguriert bedeutet, dass die Komponente nicht in COM+ registriert ist. Diese Komponente wird im Prozessbereich des Aufrufers ausgeführt, d. h. sie ist „prozessintern“. Bibliotheksanwendungen sind ebenfalls prozessintern, profitieren aber von den COM+-Diensten, darunter Sicherheit, Transaktionen und Kontextunterstützung. Serveranwendungen sind so konfiguriert, dass sie in ihrem eigenen Prozessbereich ausgeführt werden.
Unkonfigurierte Komponenten haben möglicherweise einen geringen Vorteil gegenüber Bibliotheksanwendungen. Der Leistungsvorteil von Bibliotheksanwendungen im Vergleich zu Serveranwendungen ist jedoch wesentlich deutlicher. Grund hierfür ist, dass Bibliotheksanwendungen im gleichen Prozess wie ASP, Serveranwendungen dagegen aber in ihrem eigenen Prozess ausgeführt werden. Prozessübergreifende Aufrufe sind kostspieliger als prozessinterne Aufrufe. Beim Weiterleiten von Daten wie z. B. Recordsets zwischen Prozessen müssen alle Daten zwischen beiden Prozessen kopiert werden.
Großer Nachteil! Wenn Sie beim Verwenden von COM-Serveranwendungen Objekte zwischen ASP und COM weiterleiten, stellen Sie sicher, dass „Marshalling nach Wert“ (marshal-by-value, MBV) implementiert ist. Objekte, die MBV implementieren, kopieren sich selbst von einem Prozess zu einem anderen. Dies ist besser als die Alternative, bei der das Objekt im Erstellerprozess verbleibt und der andere Prozess wiederholt in den Erstellungsprozess eingreift, um das Objekt zu verwenden. Abgetrennte ADO-Recordsets marshallen nach Wert, verbundene Recordsets nicht. Das Scripting.Dictionary-Objekt implementiert MBV nicht und sollte nicht zwischen Prozessen weitergegeben werden. Zum Schluss noch ein Rat für alle VB-Programmierer: MBV wird NICHT durch Weitergabe eines ByVal-Parameters erzielt, sondern vom ursprünglichen Komponentenverfasser implementiert.
Vorgehensweise
Wenn wir Konfigurationen mit akzeptablen Kompromissen zwischen Leistung und Zuverlässigkeit empfehlen sollten, würden diese wie folgt lauten:
- Verwenden Sie in IIS 4.0 die niedrige Isolationsstufe sowie MTS-Serverpakete.
- Verwenden Sie in IIS 5.0 die mittlere Isolationsstufe sowie COM+-Bibliotheksanwendungen.
Hierbei handelt es sich um sehr allgemeine Richtlinien. Hostunternehmen führen ASP in der Regel mit einer mittleren oder hohen Isolationsstufe aus, wohingegen Webserver mit nur einem Zweck mit einer niedrigen Isolation ausgeführt werden können. Ermitteln Sie die Kompromisse, und entscheiden Sie dann, welche Konfiguration Ihren Bedürfnissen entspricht.