Je rencontre un problème de performances sur un site que nous avons créé et je ne sais pas trop comment commencer à le diagnostiquer.
La description courte est: Nous avons un très petit site ( http://hearablog.com ) avec très peu de trafic, dans un serveur dédié de merde, le processeur est toujours très haut, parfois il reste à 100% pendant quelques minutes, et w3wp.exe prend la majeure partie. Un scénario typique est que w3wp.exe nécessite 60% et SQL Server environ 30%. Notre DB est assez petite aussi.
Description longue et plus de détails:
Le site est hébergé sur un serveur très nul par Cari.Net. Dès le début, nous avons eu le sentiment que le serveur ne se comportait pas correctement, car certaines choses prendraient trop de temps. Cela pourrait donc être un problème de configuration dès le départ. Il se peut également que nous obtenions un serveur virtuel alors que nous sommes supposés en avoir un dédié, bien que nous n’ayons aucune preuve qui indiquerait cela, sauf que le serveur a tendance à être assez lent.
Le serveur est 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.
Maintenant, c’est un matériel plutôt nul, mais j’ai eu d’autres serveurs avec ces types, avec un HW équivalent (ou pire), et les performances sont bien meilleures que celles-ci. Cela dit, les autres serveurs ont W2003 et SQL2005, et j'utilise ASP.Net "WebForms" 2.0, pas de MVC, pas de LINQ, pas de EF; Je ne suis donc pas sûr que si aller en 2008 / les autres choses signifie une grosse pénalité de performance est attendue.
Je sers régulièrement des fichiers MP3 (5-20 Mo), ce qui est une charge un peu inhabituelle, peut-être que cela pose certains problèmes?
Est-ce que cela provoquerait w3wp à utiliser beaucoup de processeur?L'utilisation du disque semble très faible. La mémoire est généralement d'environ 90%, mais l'utilisation du disque semble indiquer que la pagination est faible.
Chaque jour, je reçois des tonnes de courriels sur les délais d'attente SQL, pour des requêtes de plus de 30 secondes, bien que toutes nos requêtes soient assez simples (ou devraient l'être, mais EF est peut-être en train de tout gâcher).
Voici à quoi ressemble le moniteur de ressources dans l'un de ces "sprints" à 100% de CPU, au cas où il y aurait quelque chose d'utile là-bas.
Et un instantané de quelques compteurs de performance:
Maintenant, ce qui me trouble le plus, c’est que l’utilisation du processeur de w3wp est tellement élevée. Ça ne devrait pas vraiment faire grand chose ... Alors mes questions sont ...
- Y a-t-il un moyen de savoir "quoi" il fait? Peut-être même le profiler?
- Des compteurs de performance que je devrais regarder?
- Est-ce à prévoir, étant donné cette configuration matérielle / logicielle?
- Est-ce que cela pourrait être causé par une sorte d'échec de la configuration, par où commenceriez-vous à chercher?
Merci beaucoup.
Daniel Magliola