Ich habe ein Leistungsproblem auf einer Website, die wir erstellt haben, und weiß nicht genau, wie ich mit der Diagnose beginnen soll.
Die kurze Beschreibung lautet: Wir haben eine sehr kleine Website ( http://hearablog.com ) mit sehr wenig Datenverkehr, in einem beschissenen dedizierten Server, die CPU ist immer sehr hoch, manchmal bleibt sie für Minuten bei 100% und w3wp.exe nimmt das meiste davon. Ein typisches Szenario ist, dass w3wp.exe 60% und SQL Server etwa 30% benötigt. Unsere DB ist auch ziemlich klein.
Lange Beschreibung und weitere Details:
Die Seite wird auf einem sehr beschissenen Server von Cari.Net gehostet. Von Anfang an hatten wir das Gefühl, dass sich der Server nicht richtig verhält, da einige Dinge einfach zu lange dauern und dies von Anfang an ein Konfigurationsproblem sein könnte. Es kann auch sein, dass wir einen virtuellen Server bekommen, während wir einen dedizierten Server haben sollen, obwohl wir keine Beweise haben, die dies anzeigen, außer der Tatsache, dass der Server dazu neigt, ziemlich langsam zu sein.
Der Server ist Windows 2008 Standard 64-Bit mit SQL 2008 Express
Hardware ist ein Celeron 2,80 GHz, 1 GB RAM
Die Website wurde in ASP.Net MVC unter Verwendung von Entity Framework für den Datenzugriff entwickelt.
Nun, das ist ziemlich beschissene Hardware, aber ich hatte andere Server mit diesen Leuten, mit gleichwertiger (oder schlechterer) Hardware, und die Leistung ist viel besser als diese. Das heißt, die anderen Server haben W2003 und SQL2005, und ich verwende ASP.Net "WebForms" 2.0, kein MVC, kein LINQ, kein EF; Ich bin mir also nicht sicher, ob 2008 / das andere Zeug eine große Leistungsstrafe bedeutet.
Ich stelle regelmäßig MP3-Dateien (5 bis 20 MB) zur Verfügung. Dies ist eine etwas ungewöhnliche Last, die möglicherweise Probleme verursacht.
Würde dies dazu führen, dass w3wp viel CPU verbraucht?Die Festplattennutzung scheint sehr gering zu sein. Der Arbeitsspeicher liegt normalerweise bei etwa 90%, aber die Festplattenauslastung scheint darauf hinzudeuten, dass nicht viel ausgelagert wird.
Ich erhalte jeden Tag Unmengen von E-Mails über SQL-Zeitüberschreitungen für Abfragen, die länger als 30 Sekunden dauern, obwohl alle unsere Abfragen ziemlich unkompliziert sind (oder sein sollten, aber EF kann es vermasseln).
So sieht der Ressourcenmonitor in einem dieser "Sprints" mit 100% CPU aus, für den Fall, dass dort etwas Nützliches vorhanden ist.
Und eine Momentaufnahme einiger Leistungsindikatoren:
Was mich sehr verwirrt ist, dass die CPU-Auslastung von W3WP so hoch ist. Es sollte eigentlich nicht viel bewirken ... Also meine Fragen sind ...
- Gibt es eine Möglichkeit, herauszufinden, "was" es tut? Vielleicht sogar profilieren?
- Gibt es Leistungsindikatoren, auf die ich achten sollte?
- Ist dies bei dieser Hardware- / Software-Konfiguration zu erwarten?
- Kann dies an einem Konfigurationsfehler liegen? Wo würden Sie anfangen zu suchen?
Vielen Dank.
Daniel Magliola