IIS App Pool Hohe CPU-Auslastung trotz fehlender Anforderungen

10

Ich habe kürzlich eine Reihe von Windows Server 2008 R2 / IIS 7.5-Servern auf neue Server migriert, auf denen Windows Server 2012 / IIS 8 ausgeführt wird.

Ich habe ein merkwürdiges Verhalten von IIS. Wir haben 2 identische Server, jeder Server betreibt 2 Websites, jede in ihrem eigenen App-Pool. Der Code für jede der Websites ist identisch. (Buchstäblich ... gleiche DLLs und alles, nur etwas andere Konfiguration).

Die App-Pools werden alle 24 Stunden nach einem Zeitplan recycelt, aber während dieses 24-Stunden-Zeitraums steigt die CPU-Auslastung des w3wp-Worker-Prozesses in Schritten von 12,5% (der Server verfügt über 8 Prozessoren, daher glaube ich nicht ein Zufall).

Sobald die CPU-Auslastung steigt, wird sie NICHT wieder sinken, bis die App wiederverwendet wird. Soweit ich das beurteilen kann, tut die App derzeit nichts und verarbeitet KEINE Anfragen. Ich kann den gesamten Datenverkehr zum Server blockieren und die CPU-Auslastung bleibt einfach dort. Ich kann die Website sogar neu starten und die CPU-Auslastung bleibt gleich. Die einzige Möglichkeit, die CPU-Auslastung zurückzusetzen, besteht darin, den App-Pool, auf dem er ausgeführt wird, zu recyceln oder neu zu starten.

Ich bin mir ziemlich sicher, dass dieses Problem nichts mit meinem Code zu tun hat, sondern mit einer schlechten IIS-Konfiguration oder einer Änderung in IIS 8, die mit der Hardwarekonfiguration schlecht funktioniert, oder so?

Ich bin mir nicht sicher, ob es wichtig ist oder nicht, aber dies sind Rackspace Performance Cloud-Server.

Hier ist ein Screenshot, der Ihnen die CPU-Auslastung auf diesen Servern über die Zeit zeigt (grüne Pfeile zeigen auf die Zeiten, zu denen der App-Pool recycelt wird. Sie können sehen, dass jedes Plateau ein ganzzahliges Vielfaches von 12,5% ist:

Geben Sie hier die Bildbeschreibung ein

Hat jemand dieses Verhalten beobachtet? Ich habe diese Frage aus dem Jahr 2009 bei jemandem gefunden, der das gleiche Problem mit IIS 6 zu haben scheint:

IIS w3wp mit hoher CPU ohne Datenverkehr

Jede Hilfe wird sehr geschätzt

Leland Richardson
quelle

Antworten:

1

Hatte 2012 genau das gleiche Problem mit Sharepoint 2013 und IIS 8 ... Wir haben nie Probleme behoben, sondern auf 2008 R2 auf SP2013 heruntergestuft, und alles war in Ordnung.

George
quelle
2
Mann. Nach all der Arbeit, die ich gerade in die Migration gesteckt habe, ist dies nicht die Antwort, auf die ich gehofft habe ...: /
Leland Richardson
1

Sie können versuchen, mit dem Debug-Diagnose-Tool zu ermitteln , was das Problem verursacht. Es dient normalerweise zur Fehlerbehebung bei Abstürzen und Speicherlecks, kann jedoch dazu beitragen, herauszufinden, welche Komponente das Problem verursacht.

Greg Bray
quelle
Wie wird das Debug-Diagnosetool programmgesteuert verwendet, wenn high CPU or RAM more 90%?
Kiquenet
@Kiquenet Sie können versuchen, einen Speicherauszug des Prozesses zu erstellen und ihn dann auf einem anderen Computer zu analysieren. Ich habe ein ähnliches Problem und konnte einen Dump in <1 Minute auf einem Server mit ~ 100% CPU-Auslastung
erfassen
Ja, dann programmgesteuert einen Dump in <1 min auf einem Server mit ~ 100% CPU-Auslastung erfassen ?
Kiquenet
1

Das sieht wirklich so aus, als ob ein Code in einer Endlosschleife steckt.

Eine Anfrage kommt herein, IIS beginnt sie zu bedienen, etwas (wahrscheinlich ein Fehler) löst dieses Verhalten aus, ein Worker-Thread tritt in eine Endlosschleife ein und bindet eine CPU an 100%, und dann bleibt dies nur so, bis der App-Pool recycelt wird.

Auch wenn keine neuen Anforderungen eingehen, bleibt die CPU in Gebrauch, da der feststeckende Thread nie tatsächlich beendet wird.

Manchmal löst eine neue Anforderung dieses Verhalten erneut aus , und dann erhalten Sie zwei feststeckende CPUs (oder drei oder vier ...).

Durch das Recycling des App-Pools werden natürlich alle Worker-Threads beendet, sodass das Problem gelöst wird ... bis es erneut auftritt.

Massimo
quelle
0

Sie können einen CPU-Profiler an den w3wp-Prozess anhängen und einen Blick darauf werfen, was dort vor sich geht. Sie sollten sehen können, was die CPU-Zyklen verbraucht.

MichelZ
quelle
Wie kann ein CPU-Profiler programmgesteuert an den w3wp-Prozess angehängt werden, wenn die CPU oder der Arbeitsspeicher mehr als 90% betragen ?
Kiquenet
0

Sieht für mich wie eine Endlosschleife aus. Ich habe dies einige Male gesehen, obwohl IIS sagte, dass keine offenen Anfragen vorliegen. Ich bin mir nicht sicher, wie das sein kann, aber genau das würden Sie sehen. Der schwierige Teil ist, dass IIS Anforderungen erst protokolliert, wenn sie abgeschlossen sind. Daher ist es schwierig herauszufinden, welche Anforderung dieses Verhalten auslöst.

James
quelle