ASP.NET CPU Spike im Zusammenhang mit hoher "% Zeit in GC" - Was ist eine gute Basis für ASP.NET?

9

Ich habe eine Situation, in der eine ASP.NET-Anwendung bewirkt, dass die w3wp-Service-CPU-Auslastung auf 100% steigt, während gleichzeitig die "% -Zeit in GC" -Leistungsindikatoren sehr hohe Zahlen von 20-70% anzeigt. Dies geschieht von Zeit zu Zeit.

Dies alles begann, nachdem ich von 2.0, BTW auf .NET 4.0 aktualisiert habe.

Ich schaue mir die Leistungsindikatoren an und versuche, mehr Hinweise zu bekommen, aber mir fehlt eine gute Grundlinie ... was ist "normal"?

  • #Gen 0 Sammlungen 10.000
  • #Gen 1 Sammlungen 4.700 (scheint hoch)
  • #Gen 2 Sammlungen 1.200 (scheint wieder hoch)
  • Finalization Survivors 5000 (ist das hoch ??)

Um Ihnen eine Vorstellung davon zu geben, wie beschäftigt die App ist:

  • ASP.NET Anfragen / Sec: 170
  • ASP.NET-Sitzungen aktiv: 900

Bei jeder Seitenanfrage ist Finalization Survivors in meiner Entwicklungsumgebung ungefähr 50. Scheint hoch, aber alle Profiling-Tools, die ich angeschaut habe, zeigen nichts Außergewöhnliches ...

Ich bin auf der Suche nach einer Grundlinie auf, was die typischen Werte für diese Parameter für eine grundlegende asp.net App sind. Zum Beispiel, wie viele "Finalization Survivors" sind einfach auf ASP.NET zurückzuführen?

Vielen Dank!

UPDATE - wurde auf ".net 2.0" zurückgesetzt, das Problem wurde behoben

Ich habe seit dem Morgen mit diesem Problem gekämpft, seit ich auf .NET 4.0 aktualisiert habe Ich rollte meine Chnages zurück - setzte die Website auf asp.net 2.0, rollte einige Binärdateien zurück, die mit .net 4.0 kompiliert wurden, und alles ist jetzt schön - keine Spikes, keine lange GC-Zeit, aber immer noch eine Menge Finalisierung Überlebende ..

** UPDATE 2 - Wenn Sie nur zu .NET 4.0 in IIS wechseln, verlangsamt sich dies.

Ich aktualisiere das für den Fall, dass dies für jemand anderen eines Tages hilfreich ist, der das gleiche Problem hat. Ich habe festgestellt, dass die Probleme unmittelbar nach dem Wechsel von IIS zur Verwendung von ASP.NET 4.0 auf der Website auftreten, ohne dass der Website-Code von .net 2.0 geändert wird. Ich nahm an, vielleicht falsch, dass es abwärtskompatibel ist, deshalb sollte eine .net 2.0 Website und Ressourcen, die es referenziert, unter asp.net 4.0 gut funktionieren, aber es scheint ein Problem zu geben. Wenn ich Zeit habe, weiter zu recherchieren, werde ich dies mit meinen Ergebnissen aktualisieren.

    
Greg Bala 21.10.2011, 20:06
quelle

3 Antworten

0

Ich würde vorschlagen, einen Blick auf ANTS Performance Profiler und < a href="http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/"> ANTS Memory Profiler um zu sehen, was die Spitze verursachen könnte.

    
James Johnson 21.10.2011 20:19
quelle
0

Ich habe gesehen, dass beim Erreichen der Serverkapazität oder eines Massen-App-Pools ein Recycling stattfindet. Hier ist ein großartiger Artikel, den Sie zur Identifizierung von Engpässen verwenden können:

Kapitel 17 - Optimieren der .NET-Anwendungsleistung

    
rick schott 21.10.2011 20:52
quelle
0

Überprüfen Sie Ihren Speicherplatz und wie Sie Virtual Memory und pagefile.sys zum Erweitern konfiguriert ist. Die% -Zeit in GC kann ansteigen, wenn auf der Festplatte, auf der Sie die Auslagerungsdatei.sys abgelegt haben, sehr wenig Speicherplatz vorhanden ist. Dies liegt möglicherweise daran, dass Least kürzlich Gen2 und LOH nicht aufgerufen hat, da es keinen Platz zum Expandieren gibt und sie Ram belegen, wodurch Gen1 und 2 Platz beanspruchen. Dies bringt GC häufig und damit CPU-Spitzen.

    
Sriram Nageswaran 16.05.2017 05:44
quelle

Tags und Links