J'ai récemment migré un ensemble de serveurs Windows Server 2008 R2 / IIS 7.5 vers de nouveaux serveurs exécutant Windows Server 2012 / IIS 8.
Je rencontre un comportement étrange d'IIS. Nous avons 2 serveurs identiques, chaque serveur exécute 2 sites Web, chacun sur son propre pool d'applications. Le code de chacun des sites Web est identique. (Littéralement ... mêmes DLL et tout, configuration légèrement différente).
Les pools d'applications sont configurés pour recycler selon un calendrier toutes les 24 heures, mais pendant cette période de 24 heures, l'utilisation du processeur du processus de travail w3wp augmente par incréments de 12,5% (le serveur a 8 processeurs, donc je ne pense pas que ce soit une coïncidence).
Une fois que l'utilisation du processeur a augmenté, elle ne redescendra pas tant que l'application ne sera pas recyclée. Pour autant que je sache, l'application ne fait rien et ne traite AUCUNE demande pour le moment. Je peux bloquer tout le trafic vers le serveur et l'utilisation du processeur y restera. Je peux même redémarrer le site Web et l'utilisation du processeur reste la même. La seule façon de réinitialiser l'utilisation du processeur est de recycler ou de redémarrer le pool d'applications sur lequel il s'exécute.
Je suis quelque peu certain que ce problème n'a rien à voir avec mon code, mais une sorte de mauvaise configuration IIS ou un changement dans IIS 8 qui fonctionne mal avec la configuration matérielle ou quelque chose?
Je ne sais pas si c'est important ou non, mais ce sont des serveurs Rackspace Performance Cloud.
Voici une capture d'écran pour vous montrer la charge CPU au fil du temps sur ces serveurs (les flèches vertes indiquent les moments où le pool d'applications recycle. Vous pouvez voir que chaque plateau est un multiple entier de 12,5%:
Quelqu'un a-t-il observé ce comportement? J'ai trouvé cette question de 2009 avec quelqu'un ayant ce qui semble être le même problème avec IIS 6:
IIS w3wp utilisant un processeur élevé sans trafic
Toute aide est très appréciée
Vous pouvez essayer d' utiliser l' outil de diagnostic de débogage pour traquer ce qui est à l' origine du problème. Il sert généralement à résoudre les pannes et les fuites de mémoire, mais pourrait aider à identifier le composant à l'origine du problème.
la source
high CPU or RAM more 90%
?Cela ressemble vraiment à du code coincé dans une boucle infinie.
Une demande arrive, IIS commence à la servir, quelque chose (probablement un bogue) déclenche ce comportement, un thread de travail entre dans une boucle infinie et fixe un CPU à 100%, puis il reste tel quel jusqu'à ce que le pool d'applications soit recyclé.
Même si aucune nouvelle demande ne parvient, le CPU reste utilisé car le thread bloqué ne se termine jamais réellement.
Parfois, une nouvelle demande déclenche à nouveau ce comportement , puis vous obtenez deux processeurs bloqués (ou trois ou quatre ...).
Le recyclage du pool d'applications met bien sûr fin à tous les threads de travail, donc le problème est résolu ... jusqu'à ce qu'il se reproduise.
la source
Vous pouvez attacher un profileur CPU au processus w3wp et voir ce qui se passe là-dedans. Vous devriez pouvoir voir ce qui consomme les cycles du processeur.
la source
Cela ressemble à une boucle infinie pour moi. J'ai vu cela plusieurs fois, malgré IIS disant qu'il n'y a aucune demande en suspens. Je ne sais pas comment cela peut être, mais c'est exactement ce que vous verriez. La partie difficile est qu'IIS n'enregistre pas les demandes tant qu'elles ne sont pas terminées, il est donc difficile de déterminer quelle demande déclenche ce comportement.
la source