Comment identifier la cause de l'utilisation à 100% du processeur dans Azure App Service?

12

J'ai cinq applications dans un plan Azure App Service, toutes des copies différentes de la même application pour différents clients. Il s'agit d'une application ASP.NET MVC avec une base de données SQL.

Ce matin, je me suis réveillé sur des sites lents et non réactifs, entraînant parfois une erreur 503. En vérifiant les métriques CPU / mémoire pour le plan de service d'application, j'ai découvert que le CPU était fixé à 100%:

CPU à 100%

Et le graphique du temps processeur de chaque site montre qu'ils s'éteignent tous en même temps, bien que certains soient pires que d'autres:

Utilisation du processeur des sites individuels

J'ai essayé de résoudre le problème en effectuant un redémarrage avancé de l'application, mais la lame ne se chargeait pas - je suppose parce qu'elle essayait d'obtenir des informations du serveur qui ne pouvaient pas répondre.

À la fin, j'ai essayé d'arrêter chacun des sites un par un, ce qui a ramené le processeur à zéro, puis les redémarrer, ce qui semblait avoir résolu le problème, mais maintenant, certains d'entre eux commencent à remonter.

J'ai rencontré un problème similaire il y a quelques semaines et j'ai supposé que je devenais trop gros pour mon plan d'application, donc je suis passé de S1 à S2 et ça allait bien jusqu'à aujourd'hui.

Je ne sais absolument pas comment déterminer la cause de ce comportement gourmand en processeur. Quelqu'un peut-il m'indiquer dans la bonne direction comment commencer à diagnostiquer cela?

littlecharva
la source
cela semble se produire un peu sur les plans de service d'application Azure, avez-vous contacté MS? - à moins que vous n'ayez apporté des modifications, je leur ferai savoir qu'il y a un problème avec la plate-forme.
Sum1sAdmin
Je n'ai pas de plan de soutien avec eux, alors ne pensez pas qu'il y ait moyen de leur faire savoir. C'est un peu une inquiétude si je vais simplement rencontrer au hasard des problèmes de processeur à 100% - je devrai peut-être chercher un autre fournisseur. Pensez-vous qu'il serait utile d'avoir deux instances?
littlecharva
J'utiliserais les forums ouverts comme technet - Si c'est critique, vous pouvez le faire évoluer mais je ne paierais pas plus pour quelque chose qu'ils doivent réparer, si c'est le cas.
Sum1sAdmin

Réponses:

6

Nous avons eu ce problème plusieurs fois et à chaque fois, il s'est avéré que le GC était en cours d'exécution (collecte des ordures). C'est difficile à prouver et à diagnostiquer, mais ce que je finis par utiliser, c'est le site kudo (scm), en cliquant sur tools => support (qui vous amène au site de support pour les applications.

De là, vous choisissez votre répertoire (au cas où vous en avez plusieurs) et votre site, cliquez sur Analyser => Métriques puis sur le bouton Diagnostiquer ( NOTEZ que cela a déjà changé pour que ces étapes puissent changer à tout moment), puis revenez sur Analyser => Dianotics, vous 'obtiendra finalement un rapport de vidage de mémoire => "État de l'analyse". Il doit s'agir d'un fichier mht (que vous pouvez ouvrir dans le navigateur haineux IE ou Edge), puis recherchez la clé "gc".

vous trouverez des cadres de pile d'appels intéressants avec des références à des choses comme "GCFrame" ou plus intéressant à "System.Threading.WaitHandle.WaitMultiple" si vous en obtenez trop, votre système pourrait avoir des problèmes avec la récupération de place .

Comment résoudre cela ... c'est un sujet abordé dans de nombreux autres threads parce que c'est comme demander "comment vivre dans un monde avec IE 6 encore utilisé?" ...

cdmdotnet
la source
1
Cela a bougé. Il est maintenant situé dans l'App Service (pas le site scm, le site Azure standard) dans "Diagnostiquer et résoudre les problèmes-> Outils de diagnostic-> Collecter le vidage de la mémoire"
Josh Noe
3

Votre meilleur pari serait d'installer New Relic ou Application Insights pour cette application particulière. Il peut être facilement installé via App Service -> Tools -> Performance Monitoring. Cela vous donnera une vue détaillée de ce qui se passe à la fois côté serveur et côté client.

Surveillance des applications

Article: Surveiller les performances des applications Web Azure

Bruno Faria
la source