Je rencontre un problème de performance sur un site que nous avons créé, et je ne sais pas exactement comment commencer à le diagnostiquer.
La description courte est la suivante : Nous avons un site très petit (http://hearablog.com) avec très peu de trafic, sur un serveur dédié médiocre, le CPU est toujours très élevé, parfois il reste à 100% pendant des minutes, et w3wp.exe en consomme la majeure partie. Un scénario typique est que w3wp.exe prend 60 %, et SQL Server en prend environ 30 %. Notre base de données est également assez petite.
Description longue et plus de détails :
-
Le site est hébergé sur un serveur très médiocre par Cari.Net. Dès le début, nous avions le sentiment que le serveur ne se comportait pas correctement, que certaines choses prenaient trop de temps, donc cela pourrait être un problème de configuration dès le départ. Il peut également être possible que nous ayons un serveur virtuel alors que nous devrions avoir un dédié, bien que nous n'ayons aucune preuve indiquant cela, excepté le fait que le serveur a tendance à être assez lent.
-
Le serveur est sous Windows 2008 Standard 64 bits, avec SQL 2008 Express
-
Le matériel est un Celeron 2.80 GHz, 1 Go de RAM
-
Le site web est développé en ASP.Net MVC, utilisant Entity Framework pour l'accès aux données.
-
Ce matériel est assez médiocre, mais j'ai eu d'autres serveurs avec ces mêmes personnes, avec des configurations équivalentes (ou pires), et les performances sont bien meilleures que celui-ci. Cependant, ces autres serveurs tournent sous W2003 et SQL2005, et j'utilise ASP.Net "WebForms" 2.0, pas de MVC, pas de LINQ, pas de EF ; donc je ne suis pas certain si passer à 2008 / aux autres composants impliquerait une grosse perte de performance.
-
Je sers régulièrement des fichiers MP3 (de 5 à 20 Mo), ce qui est une charge légèrement inhabituelle, peut-être que cela cause des problèmes ?
Est-ce que cela pourrait causer une forte utilisation du CPU par w3wp ? -
L'utilisation du disque semble très faible. La mémoire est généralement autour de 90 %, mais l'utilisation du disque semble indiquer qu'il n'y a pas beaucoup de pagination.
-
Je reçois plein d'e-mails chaque jour sur des délais d'attente SQL, pour des requêtes dépassant 30 secondes, bien que toutes nos requêtes soient assez simples (ou devraient l'être, mais EF pourrait causer des problèmes).
Voici à quoi ressemble le moniteur de ressources lors d'une de ces périodes à 100 % de CPU, au cas où il y aurait quelque chose d'utile là-dedans.
Et un instantané de quelques compteurs de performances :
Maintenant, ce qui me perturbe beaucoup, c'est que l'utilisation du CPU par w3wp est si élevée. Il ne devrait pas vraiment faire grand-chose... Donc mes questions sont...
- Y a-t-il un moyen de savoir "quoi" il fait ? Peut-être même le profiler ?
- Des compteurs de performances spécifiques auxquels je devrais prêter attention ?
- Est-ce que c'est attendu compte tenu de cette configuration matérielle/logicielle ?
- Est-ce que cela pourrait être dû à une défaillance de configuration, où commenceriez-vous à chercher ?
Merci BEAUCOUP.
Daniel Magliola