Sto riscontrando un problema di prestazioni in un sito che abbiamo creato e non sono esattamente sicuro di come iniziare a diagnosticare.
La descrizione breve è: abbiamo un sito molto piccolo ( http://hearablog.com ) con pochissimo traffico, in un server dedicato scadente, la CPU è sempre molto alta, a volte rimane al 100% per minuti e w3wp.exe ci sta prendendo la maggior parte. Uno scenario tipico è w3wp.exe che richiede il 60% e SQL Server richiede circa il 30%. Anche il nostro DB è piuttosto piccolo.
Descrizione lunga e maggiori dettagli:
Il sito è ospitato in un server molto scadente da Cari.Net. Fin dall'inizio abbiamo avuto la sensazione che il server non si comportasse correttamente, come se alcune cose impiegassero troppo tempo, quindi questo potrebbe essere un problema di configurazione sin dall'inizio. Si può anche essere che stiamo ottenendo un server virtuale mentre stiamo suppone di avere uno dedicato, anche se non abbiamo alcuna prova che l'avrebbe indicano questo, tranne per il fatto che il server tende ad essere piuttosto lento.
Il server è Windows 2008 Standard a 64 bit, con SQL 2008 Express
L'hardware è un Celeron 2,80 GHz, 1 Gb di RAM
Il sito Web è sviluppato in ASP.Net MVC, utilizzando Entity Framework per l'accesso ai dati.
Ora, questo è un hardware piuttosto scadente, ma ho avuto altri server con questi ragazzi, con un HW equivalente (o peggio) e le prestazioni sono molto migliori di questo. Detto questo, gli altri server hanno W2003 e SQL2005 e sto usando ASP.Net "WebForms" 2.0, nessun MVC, nessun LINQ, nessun EF; quindi non sono sicuro se andare al 2008 / le altre cose significhino una grande penalità prestazionale.
Sto servendo regolarmente file MP3 (5-20 Mb), il che è un carico leggermente insolito, forse sta causando qualche tipo di problema?
Ciò farebbe sì che w3wp usasse molta CPU?L'utilizzo del disco sembra molto basso. La memoria è in genere intorno al 90%, ma l'utilizzo del disco sembra indicare che non sta effettuando molto il paging.
Ricevo tonnellate di e-mail ogni giorno sui timeout di SQL, per query che richiedono più di 30 secondi, anche se tutte le nostre query sono piuttosto semplici (o dovrebbero esserlo, ma EF potrebbe rovinare tutto).
Ecco come si presenta il monitoraggio delle risorse in uno di questi "sprint" con CPU al 100%, nel caso ci fosse qualcosa di utile lì.
E un'istantanea di alcuni contatori delle prestazioni:
Ora, ciò che mi confonde molto è che l'utilizzo della CPU di w3wp è così alto. Non dovrebbe fare molto davvero ... Quindi le mie domande sono ...
- C'è un modo per scoprire "cosa" sta facendo? Forse anche profilarlo?
- Qualche contatore delle prestazioni che dovrei guardare?
- Questo è prevedibile data questa configurazione hardware / software?
- Questo potrebbe essere causato da un errore di configurazione, da dove inizieresti a cercare?
Grazie mille.
Daniel Magliola