Pool di app IIS Elevato utilizzo della CPU nonostante nessuna richiesta


10

Di recente ho migrato un set di server Windows Server 2008 R2 / IIS 7.5 su nuovi server che eseguono Windows Server 2012 / IIS 8.

Sto riscontrando un comportamento strano da parte di IIS. Abbiamo 2 server identici, ogni server esegue 2 siti Web, ognuno nel proprio pool di app. Il codice per ciascuno dei siti Web è identico. (Letteralmente ... stesse dll e tutto, solo una configurazione leggermente diversa).

I pool di app sono impostati per essere riciclati su una pianificazione ogni 24 ore, ma durante quel periodo di 24 ore, l'utilizzo della CPU del processo di lavoro w3wp aumenta con incrementi del 12,5% (il server ha 8 processori, quindi non credo che sia una coincidenza).

Una volta che l'utilizzo della CPU salta, NON tornerà indietro fino a quando l'app non ricicla. Per quanto ne so, l'app al momento non sta facendo nulla e non sta elaborando NESSUNA richiesta. Posso bloccare tutto il traffico verso il server e l'utilizzo della CPU rimarrà lì. Posso anche riavviare il sito Web e l'utilizzo della CPU rimane lo stesso. L'unico modo per ripristinare l'utilizzo della CPU è riciclare o riavviare il pool di app su cui viene eseguito.

Sono abbastanza certo che questo problema non ha nulla a che fare con il mio codice, ma una sorta di scarsa configurazione IIS o una modifica in IIS 8 che funziona male con la configurazione hardware o qualcosa del genere?

Non sono sicuro che sia importante o meno, ma si tratta di server Rackspace Performance Cloud.

Ecco uno screenshot per mostrare il carico della CPU nel tempo su questi server (le frecce verdi indicano i tempi in cui il pool di app ricicla. Puoi vedere che ogni plateau è un multiplo integrale del 12,5%:

inserisci qui la descrizione dell'immagine

Qualcuno ha osservato questo comportamento? Ho trovato questa domanda dal 2009 con qualcuno che ha quello che sembra essere lo stesso problema con IIS 6:

IIS w3wp utilizzando CPU alta senza traffico

Ogni aiuto è molto apprezzato

Risposte:


1

Ho avuto lo stesso identico problema con Sharepoint 2013 e IIS 8 nel 2012 ... Non abbiamo mai risolto i problemi, ma invece abbiamo effettuato il downgrade a SP2013 nel 2008 R2 e tutto andava bene.


2
uomo. dopo tutto il lavoro che ho appena fatto per migrare, questa non è la risposta che speravo ...: /
Leland Richardson,

1

Puoi provare a utilizzare lo strumento di diagnostica di debug per rintracciare la causa del problema. Di solito è per la risoluzione di arresti anomali e perdite di memoria, ma potrebbe aiutare a trovare quale componente sta causando il problema.


Come posso usare lo strumento Debug Diagnostic a livello di codice quando high CPU or RAM more 90%?
Kiquenet,

@Kiquenet Potresti provare a prendere un dump della memoria del processo e quindi ad analizzarlo su un'altra macchina. Sto affrontando un problema simile ed è stato in grado di catturare un dump in <1 minuto su un server con un utilizzo della CPU del ~ 100%
Piyush Saravagi

sì, quindi acquisire una discarica in <1 min su un server ~ utilizzo della CPU al 100% a livello di codice ?
Kiquenet,

1

Questo in realtà si presenta come un codice bloccato in un ciclo infinito.

Una richiesta arriva, IIS inizia a servirla, qualcosa (probabilmente un bug) attiva questo comportamento, un thread di lavoro entra in un ciclo infinito e inserisce una CPU al 100%, quindi rimane così fino a quando il pool di app non viene riciclato.

Anche se non arrivano nuove richieste, la CPU rimane in uso perché il thread bloccato non si interrompe mai.

A volte una nuova richiesta attiva nuovamente questo comportamento e quindi si ottengono due CPU bloccate (o tre, o quattro ...).

Il riciclaggio del pool di app ovviamente termina tutti i thread di lavoro, quindi il problema viene risolto ... fino a quando non si ripete.


0

È possibile collegare un profiler CPU al processo w3wp e dare un'occhiata a quello che sta succedendo lì. Dovresti essere in grado di vedere cosa consuma i cicli della CPU.


come collegare un profiler della CPU al processo w3wp a livello di codice quando CPU o RAM elevate sono più del 90% ?
Kiquenet,

0

A me sembra un ciclo infinito. L'ho visto alcune volte, nonostante IIS abbia affermato che non ci sono richieste in sospeso. Non sono sicuro di come possa essere, ma questo è esattamente ciò che vedresti. La parte difficile è che IIS non registra le richieste fino al loro completamento, quindi scoprire quale richiesta attiva questo comportamento è difficile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.