L'utilizzo di CPU IIS aumenta gradualmente in diversi giorni fino al 100%

Alta CPU

L'image spiega tutto. Abbiamo avuto un problema con un sito web di IIS MVC 5 ospitato su Microsoft Azure negli ultimi mesi. Il sito sembra continuare a consumare la CPU per alcuni giorni fino a raggiungere la CPU del 100%. Ho usato Perfmon / DebugDiag per catturare ciò che accade quando il server esegue il colpo al 100% senza risultati positivi. Ho anche monitorato i processi di lavoro di IIS per vedere se è una richiesta particolare appesa, ma tutte le richieste vengono elaborate rapidamente (fino al 100%). Afferro alle canne – abbiamo avuto controlli di codice di codice per assicurare che non si verificano cattivi loops / concatine di string.

La mia ipotesi è che questo abbia qualcosa a che fare con il collettore di rifiuti … Ripristinare l'app pool risolve il problema (per alcuni giorni).

Qualsiasi intuizione sarebbe apprezzata per come eseguire il debug di questo ulteriore. Ho seguito questo articolo di Microsoft senza successo: http://www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-high-cpu-in-ani-iis-7x-application-pool

Grazie.

  • Come faccio a eseguire tutti gli URL attraverso un singolo file PHP?
  • Configurare ASP.NET MVC2 su Apache 2.2 utilizzando mod_aspdotnet
  • Intermittente ad alta CPU (100%) sul webserver di produzione
  • L'installazione di ASP.NET MVC su Windows 2003 richiede un riavvio del server?
  • One Solution collect form web for “L'utilizzo di CPU IIS aumenta gradualmente in diversi giorni fino al 100%”

    La raccolta di rifiuti è tipicamente correlata alla memory, non per la CPU. Naturalmente, si potrebbero avere oggetti che hanno routine in essi che sono in loop e quegli oggetti stanno lentamente in crescita o il tempo tra iterazioni loop è in diminuzione. Sì, devi profilare i tuoi processi in quanto questo ti dirà quali methods stanno causando tutto il tempo della CPU. Raccommand lo strumento JustTrace di Telerik, anche se ci sono molti altri là fuori.

    Un altro pensiero, si potrebbe pensare di aver smaltito il tuo object, ma il ciclo è ancora in esecuzione. Considera di terminare graziosamente i tuoi loop con un token o una condizione di cancellazione.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.