Mit dem .net Framework werden bekanntlich auch neue Konfigurationsdateien eingeführt. Im .net Framework Ordner config gibt es eine Konfigurationsdatei namens machine.config mit der unter anderem auch das Prozessmodell von ASP .NET konfiguriert werden kann.
Entscheidend ist jedoch ob wir ASP .NET auf einem Windows 2000 Server mit IIS 5.0 oder auf einem Windows 2003 Server mit II2 6 ausführen.
ASP .NET mit IIS 5
Hier kann man durch Konfiguration des <processModel> Elements in der machine.config Unterstützung für Mehrprozessorsysteme aktivieren ( WebGarden ). Um die Unterstützug zu aktivieren muss das Attribut webGarden auf den wert true gesetzt werden und zusätzlich das Attribut cpuMask auf den entsprechenden Wert gesetzt erhöht werden. Der Standard für den webGarden Wert ist false, dies bedeutet dass das Betriebssystem die Prozessorauslastung vornimmt. Wenn der Wert jedoch auf true gesetzt wird und das Attribut cpuMask gesetzt ist werden nur die Prozessoren verwendet welche durch den cpuMask Wert zur Verfügung gestellt worden sind. Um den korrekten Wert für Ihr System zu ermitteln müssen Sie wissen das es sich hierbei um eine Bit Maske handelt, wenn wir z.B: ein vier Prozessorsystem haben werden die vier Prozessoren durch folgenden Bit Wert repräsentiert: 1111. Dies würde bedeuten der ASP .NET Arbeitsprozess würde auf vier Prozessoren verteilt, was heisst es werden vier Prozesse gestartet. Wollen Sie jedoch das der z.B: nur auf den Prozessoren 0, 2 und 3 laufen sollen ist die Bit Maske 1101. Starten Sie Calc.exe. Schalten Sie auf Wissenschaftlich und Bin um, geben Sie die BitMaske ein und schalten Sie dann auf Hex um. Den Wert geben Sie nun als cpuMask Wert in der machine.config an. Zum Schluss muss noch der IIS neu gestartet werden damit die Änderungen auch übernommen werden.
ASP .NET mit IIS 6
Wenn als Web Server der IIS6 zum Einsatz kommt gilt folgendes: Das <processModel> Element wird bis auf folgende Attribute nicht benutzt:
- maxWorkerThreads
- maxIoThreads
diese beiden Attribute definieren die maximalen Arbeits- bzw. IO Threads die ASP .NET erzeugen darf. Diese beiden Werte sollten von 20 auf 100 erhöht werden.
- responseDeadlockInterval
Hiermit wird definiert wann der ASP .NET Prozess neu gestartet wir. Standard sind hier 3 Minuten
Alle anderen Konfigurationsmöglichkeiten werden über die Management Console des IIS vorgenommen. Hier werden die so genannten AnwendungsPools konfiguriert.
Beachten muss man jedoch IMMER: Wenn eine Anwendung über mehrere Prozessoren verteilt wird entstehen mehrere Prozesse in denen die Anwendung läuft. Diese teilen nicht denselben Sitzungstatus, deshalb gilt: Immer die Sessions auslagern, entweder in den ASP :NET Sitzungsdienst (aspnet_state.exe) oder in eine Datenbank ( Install*SqlState.sql).
Zum Abschluss muss noch gesagt werden, dass es nicht immer von Vorteil ist WebGardens zu aktivieren. Man sollte die Einstellung einmal testen ob sich dadurch wirklich ein Vorteil für die Anwendung ergibt.
Restart eines AnwendungsPools aus einem .NET Programm heraus:
void RestartApplicationPool(string applicationPoolName)
{
if (applicationPoolName == null)
{
throw new ArgumentNullException("applicationPoolName");
}
using (System.DirectoryServices.DirectoryEntry applicationPool = new System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/AppPools/" + applicationPoolName))
{
applicationPool.Invoke("Recycle");
}
} |