2011-10-21 10 views
9

Ho una situazione in cui un'applicazione ASP.NET causa l'utilizzo della cpu del servizio w3wp al picco al 100% mentre allo stesso tempo i contatori delle prestazioni "% time in GC" mostrano numeri molto elevati del 20-70%. Questo succede di tanto in tanto.ASP.NET Spike della CPU correlato all'alto "% di tempo in GC" - qual è una buona base per ASP.NET?

Tutto questo è iniziato dopo l'aggiornamento a .NET 4.0 da 2.0, BTW.

Sono guardato i contatori delle prestazioni, cercando di ottenere più indizi, ma mi manca una buona linea di base ... cosa è "normale"?

  • #Gen 0 Collezioni 10.000
  • #Gen 1 Collezioni 4.700 (sembra alto)
  • #Gen 2 collezioni 1200 (sembra di nuovo alto)
  • finalizzazione Survivors 5000 (è questo alto ??)

Per dare un'idea di come occupato l'app è:

  • AS Le richieste P.NET/Sec: 170
  • ASP.NET sessioni attive: 900

Su ogni richiesta di pagina, nel mio ambiente dev, finalizzazione sopravvissuti è di circa 50. sembra alto, ma tutti gli strumenti di profiling ho guardato at, non mostrare nulla di ordinario ...

Sto cercando alcuni dati di base su quali sono i valori tipici di questi parametri per un'app di base per asp.net. Ad esempio, quanti "sopravvissuti alla finalizzazione" sono semplicemente dovuti a ASP.NET?

Grazie mille!

AGGIORNAMENTO - rollback a Net 2.0 "fissa" il problema

ho lottato con questo problema fin dal mattino, da quando ho aggiornato a .NET 4.0 I rollback miei chnages - impostare il sito Web per utilizzare asp.net 2.0, rollback di alcuni binari compilati con .net 4.0 e tutto è bello ora - senza picchi, senza tempo lungo GC, ma comunque un sacco di sopravvissuti alla finalizzazione ..

* * AGGIORNAMENTO 2: il passaggio a .NET 4.0 in IIS causa questo rallentamento

Sto aggiornando questo nel caso in cui questo è utile a qualcun altro un giorno che ha lo stesso problema. Ho riscontrato che i problemi si verificano subito dopo aver attivato IIS per utilizzare ASP.NET 4.0 sul sito Web, senza modificare alcun codice del sito Web .net 2.0. Ho ipotizzato, forse erroneamente, che sia compatibile con le versioni precedenti quindi un sito Web .net 2.0 e le risorse a cui fa riferimento dovrebbero funzionare correttamente con asp.net 4.0 ma sembra esserci qualche problema. Se avrò tempo per indagare ulteriormente, aggiornerò questo con i miei risultati

+0

+1 Altri aggiornamenti su questo? Ho un problema simile con Finalization Survivors (oscilla tra 164 e 575). Sto semplicemente usando il monitor delle prestazioni di Win 7. Ho molte raccolte di oggetti. Quale altro parametro dovrei essere interessato? .NET 3.5 e vinci l'app. – Chookoos

risposta

0

Suggerirei di dare un'occhiata a ANTS Performance Profiler e ANTS Memory Profiler per vedere quale potrebbe essere la causa del picco.

+0

Yea I ANTS memoria profiler è uno degli strumenti che ho usato BUT, l'ho usato solo sul mio dev e sull'ambiente di staging. aveva paura di usarli in produzione - è sicuro per l'uso in produzione? –

+0

Non è l'ideale, ma devi arrivare al fondo in qualche modo, giusto? Non può essere peggiore di quello che sta succedendo al momento giusto? Con l'aumento della CPU così elevato, chiunque utilizzi l'applicazione sperimenterà ritardi significativi. –

0

Ho notato che quando si raggiunge la capacità del server o si sta verificando un riciclo di pool di app di massa.Ecco grande articolo è possibile seguire per identificare i colli di bottiglia:

Chapter 17 — Tuning .NET Application Performance

0

Controllare lo spazio su disco e come la memoria virtuale e pagefile.sys è configurato per espandersi. % di tempo in GC potrebbe aumentare se lo spazio su disco è molto basso sul disco in cui è stato inserito pagefile.sys. Ciò è probabilmente dovuto al fatto che meno recente utilizzo di Gen2 e LOH non può essere impaginato poiché non c'è spazio per espandersi e occupano Ram lasciando Gen1 e 2 per stipare spazio. Questo fa kick in GC frequentemente e quindi picchi di CPU.

Problemi correlati