elevato carico della CPU ASP.NET non si verifica quando si esegue il servizio come una console una volta?

StackOverflow https://stackoverflow.com/questions/4757255

Domanda

Il mio ambiente: Windows Server 2008, IIE 7.0, ASP.NET

Ho sviluppato un client Silverlight. Questo client ottiene aggiornamenti dall'host ASP.NET attraverso un servizio WCF web.

ottenere l'utilizzo della CPU al 100% e la connessione cade quando abbiamo un numero molto basso di utenti (~ 50). Il server dovrebbe chiaramente essere in grado di gestire un sacco di più.

ho eseguito alcuni test sul nostro server DEV e infatti arriva al massimo 100 richieste / s fuori dalla CPU. Cosa c'è di strano è che anche se il servizio viene sostituito da un manichino invio di dati indietro hardcoded il servizio arriva al massimo ancora fuori dalla CPU. Il numero di thread sembrava molto bassa a circa 20 così ho pensato che ci fosse qualche contesa da qualche parte.

ho cambiato tutte le opzioni di configurazione che ho trovato per aumentare i thread di lavoro (processModel, httpRuntime e la voce del Registro MaxRequestsPerCPU). Nulla è cambiato.

Poi ho fermato il server IIS e corse il servizio web come una console (rimozione di tutti i riferimenti di autenticazione ASP). Il servizio maxed la CPU pure.

Poi arriva la parte magica: ho ucciso il console app ed ho ricominciato IIS e ora il servizio viene eseguito una CPU 5-60% con 100 richieste / s e posso vedere 50 + thread di lavoro. Ho fatto la stessa cosa sulla nostra macchina preprod e aveva lo stesso effetto magico. Il riavvio delle macchine mantiene il comportamento buono.

Quindi la mia domanda è: che cosa è successo a fissare il mio server di IIS? Io davvero non riesco a capire che cosa riparato.

Saluti.

È stato utile?

Soluzione

Scopri la causa principale del elevato utilizzo della CPU, e quindi è possibile trovare una soluzione,

http://support.microsoft.com/kb/919791

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top