Dies scheint einer der Fälle zu sein, in denen Simulation (oder Quellcode-Zugriff ...> Seufzen <) wahrscheinlich der einzige Weg ist, um das Verhalten mit einem gewissen Maß an Sicherheit zu erkennen.
In der Dokumentation zum Ereignisprotokolleintrag für das CPU-Kontingentrecycling wird wie folgt über das Recycling gesprochen:
Standardmäßig überlappt sich das Recycling des Anwendungspools. Dies bedeutet, dass der zu beendende Arbeitsprozess bis zum Start eines neuen Arbeitsprozesses ausgeführt wird. Nachdem ein neuer Arbeitsprozess gestartet wurde, werden neue Anforderungen an ihn übergeben. Der alte Arbeitsprozess wird heruntergefahren, nachdem die Verarbeitung der vorhandenen Anforderungen abgeschlossen ist, oder nach einem konfigurierten Zeitlimit, je nachdem, was zuerst eintritt. Diese Art des Recyclings gewährleistet einen unterbrechungsfreien Service für die Kunden. Wenn eine Anwendung im Anwendungspool jedoch nicht mehr als eine Instanz gleichzeitig ausführen kann, kann die überlappende Rotation deaktiviert werden.
Es scheint mir, dass das Beenden eines Arbeitsprozesses aufgrund eines übermäßigen CPU-Verbrauchs per Definition bedeuten würde, dass ausstehende Anforderungen nicht abgeschlossen werden dürfen (da sie das CPU-Kontingent erschöpfen).
Um zu Ihrem Hauptanliegen zu sprechen: Ich sehe nichts, was mich glauben lässt, dass ein neuer Arbeitsprozess nicht automatisch gestartet wird. Die Aussage in Ihrem Stapelüberlauf-Link lässt mich fragen, ob der von IIS verwendete Algorithmus das Recycling tatsächlich mit der Auflösung des Timers verknüpft, der zur Messung der CPU-Kontingentauslastung verwendet wird. Der beste Weg, dies festzustellen, besteht darin, eine CPU-verschwenderische serverseitige Komponente zu schreiben, sie in einer Testumgebung bereitzustellen und zu sehen, wie sich ihr Recyclingverhalten verhält. Eine einfache Komponente, die einige Sekunden lang in einer engen Schleife sitzt und dann eine bekannte Zeichenfolge zurückgibt, kombiniert mit einem Client, der ein Testkabel mit so etwas wie einem Pool paralleler "wget" -Prozesse ausführt, könnte ausreichen.
Angesichts der Kommentare in der anderen Antwort habe ich meine eigenen Tests durchgeführt, die ich hier wiederholen werde.
Wenn ich in meinen Tests einen Anwendungspool (v4.0 Integrated) auf ein kleines CPU-Limit (0,01%) und ein kleines Intervall (1 Minute) mit aktivierter KillW3WP- Aktion beschränke, wird das w3wp durch Stoppen des Anwendungspools beendet, wenn dieses Limit überschritten wird .
Nach Erreichen des Intervalllimits wird der Anwendungspool automatisch neu gestartet .
Wenn Sie die Aktion in " Keine Aktion" ändern, wird der w3wp-Prozess nicht geändert.
In beiden Fällen wird ein Systemereignis 5025 protokolliert.
quelle