Mam problem z wydajnością w utworzonej przez nas witrynie i nie jestem pewien, jak rozpocząć diagnozowanie.
Krótki opis: mamy bardzo małą stronę ( http://hearablog.com ) o bardzo małym ruchu, w kiepskim dedykowanym serwerze procesor jest zawsze bardzo wysoki, czasami utrzymuje się na 100% przez kilka minut, a w3wp.exe bierze większość. Typowy scenariusz to w3wp.exe zajmuje 60%, a SQL Server około 30%. Nasz DB też jest dość mały.
Długi opis i więcej szczegółów:
Witryna jest hostowana na bardzo gównianym serwerze przez Cari.Net. Od samego początku mieliśmy wrażenie, że serwer nie zachowywał się poprawnie, tak jakby niektóre rzeczy trwałyby zbyt długo, więc może to być problem z konfiguracją od samego początku. Może się zdarzyć, że otrzymamy serwer wirtualny, podczas gdy mamy mieć dedykowany serwer, chociaż nie mamy dowodów, które by to wskazywały, z wyjątkiem faktu, że serwer jest dość powolny.
Serwer to 64-bitowy system Windows 2008 Standard z SQL 2008 Express
Sprzęt to Celeron 2,80 GHz, pamięć RAM 1 Gb
Witryna została opracowana w ASP.Net MVC, przy użyciu Entity Framework do dostępu do danych.
Teraz jest to dość kiepski sprzęt, ale miałem inne serwery z tymi facetami, z równoważnym (lub gorszym) sprzętem, a wydajność jest znacznie lepsza niż ten. To powiedziawszy, inne serwery mają W2003 i SQL2005 i używam ASP.Net „WebForms” 2.0, bez MVC, bez LINQ, bez EF; więc nie jestem pewien, czy przejście na rok 2008 / inne rzeczy oznacza spodziewaną wysoką karę za wydajność.
Regularnie obsługuję pliki MP3 (5-20 Mb), co jest nieco nietypowym obciążeniem, może to powoduje jakieś problemy?
Czy to spowodowałoby, że w3wp zużywałoby dużo procesora?Wykorzystanie dysku wydaje się bardzo niskie. Pamięć zwykle wynosi około 90%, ale użycie dysku wydaje się wskazywać, że nie stroni dużo.
Codziennie otrzymuję mnóstwo e-maili o przekroczeniu limitu czasu SQL, dla zapytań trwających ponad 30 sekund, chociaż wszystkie nasze zapytania są dość proste (lub powinny być, ale EF może to popsuć).
Tak wygląda monitor zasobów w jednym z tych „sprintów” 100% procesora, na wypadek, gdyby było tam coś użytecznego.
I migawka niektórych liczników wydajności:
Teraz bardzo mnie dezorientuje to, że użycie procesora w3wp jest tak wysokie. Naprawdę nie powinno to robić wiele ... Więc moje pytania ...
- Czy jest jakiś sposób, aby dowiedzieć się „co” robi? Może nawet profilujesz?
- Jakieś liczniki wydajności, na które powinienem patrzeć?
- Czy należy się tego spodziewać, biorąc pod uwagę tę konfigurację sprzętu / oprogramowania?
- Czy przyczyną może być jakiś błąd konfiguracji, od czego byś zaczął?
Dziękuję Ci bardzo.
Daniel Magliola