Partager via


Résolution des problèmes d’utilisation élevée du processeur sur les machines virtuelles Azure Windows

Résumé

Les problèmes de performances se produisent dans différents systèmes d’exploitation ou applications, et chaque problème nécessite une approche unique pour le dépannage. La plupart de ces problèmes concernent le processeur, la mémoire, la mise en réseau et les entrées/sorties (E/S) en tant qu’emplacements clés où le problème se produit. Chacune de ces zones génère des symptômes différents (parfois simultanément) et nécessite un diagnostic et une solution différents.

Cet article traite des problèmes d’utilisation élevée du processeur qui se produisent sur les machines virtuelles Azure (VM) qui exécutent le système d’exploitation Windows.

Problèmes de processeur élevé sur les machines virtuelles Azure Windows

Outre les problèmes d’E/S et de latence du réseau, le dépannage du processeur et de la mémoire nécessite les mêmes outils et étapes que les serveurs sur site. L’un des outils généralement pris en charge par Microsoft est PerfInsights (disponible pour Windows et Linux). PerfInsights peut fournir un diagnostic des bonnes pratiques de machine virtuelle Azure dans un rapport convivial. PerfInsights est également un outil wrapper qui peut aider à collecter des données Perfmon, Xperf et Netmon, selon les indicateurs sélectionnés dans l’outil.

La plupart de vos outils de dépannage des performances existants, tels que Perfmon ou Procmon, qui sont utilisés pour les serveurs locaux fonctionneront sur les machines virtuelles Azure Windows. Cependant, PerfInsights est explicitement conçu pour les machines virtuelles Azure afin de fournir plus d’informations, notamment les meilleures pratiques Azure, les meilleures pratiques SQL, les graphiques de latence d’E/S haute résolution, les onglets CPU et mémoire, etc.

Qu’il s’exécute en mode utilisateur ou en mode noyau, tout thread d’un processus actif nécessite des cycles CPU pour exécuter le code à partir duquel il est construit. De nombreux problèmes sont directement liés à la charge de travail. Le type de charge de travail qui existe sur le serveur entraîne la consommation de ressources, y compris le processeur.

Facteurs communs

Les facteurs suivants sont courants dans une situation de CPU élevée :

  • Une modification ou un déploiement de code récent qui s’applique principalement aux applications telles que Internet Information Services (IIS), Microsoft SharePoint, Microsoft SQL Server ou des applications tierces.

  • Une mise à jour récente qui peut être liée à une mise à jour au niveau du système d’exploitation ou à des mises à jour et correctifs cumulatifs au niveau de l’application.

  • Un changement de requête ou des index obsolètes. Les applications de couche de données SQL Server et Oracle ont également une optimisation du plan de requête comme autre facteur. Les modifications de données ou le manque d’index appropriés peuvent rendre plusieurs requêtes plus gourmandes en ressources de calcul.

  • Spécifique à la machine virtuelle Azure. Certains processus tels que RDAgent et des processus spécifiques à l’extension tels que l’agent de surveillance, l’agent MMA ou le client de sécurité peuvent entraîner une consommation élevée du processeur. Ces processus doivent être visualisés du point de vue de la configuration ou des problèmes connus.

Résolution du problème

Cet article se concentre sur l’isolement du processus problématique. Une analyse plus approfondie sera spécifique au processus qui entraîne une consommation élevée de CPU.

Par exemple, si le processus est SQL Server (sqlservr.exe), les étapes suivantes consisteront à analyser quelle requête utilisait le plus de cycles CPU au cours d’une période spécifique.

Étendue du problème

Voici quelques questions à poser lorsque vous résolvez le problème :

  • Existe-t-il une tendance au problème ? Par exemple, le problème de processeur élevé se produit-il à une certaine heure chaque jour, semaine ou mois ? Si oui, pouvez-vous corréler ce problème à une tâche, un rapport ou une connexion utilisateur ?

  • Le problème de processeur élevé a-t-il commencé après un changement de code récent ? Avez-vous appliqué une mise à jour dans Windows ou dans une application ?

  • Le problème de processeur élevé a-t-il commencé après une modification de la charge de travail, telle qu’une augmentation du nombre d’utilisateurs, un flux de données plus important ou un plus grand nombre de rapports ?

  • Pour Azure, le problème de processeur élevé a-t-il commencé dans l’une des conditions suivantes ?

    • Après un redéploiement ou un redémarrage récent
    • Lorsqu’un SKU ou un type de machine virtuelle a changé
    • Lorsqu’une nouvelle extension a été ajoutée
    • Une fois les modifications apportées à l’équilibreur de charge

Avertissements Azure

Comprenez votre charge de travail. Lorsque vous sélectionnez une machine virtuelle, vous pouvez sous-estimer le nombre de processeurs virtuels (vCPU) lorsque vous examinez le coût d’hébergement mensuel global. Si votre charge de travail est gourmande en ressources de calcul, la sélection d’une référence SKU de machine virtuelle plus petite dotée d’un ou de deux processeurs virtuels peut entraîner des problèmes de charge de travail. Testez différentes configurations pour votre charge de travail afin de déterminer la meilleure capacité informatique requise.

Certaines séries de machines virtuelles, telles que la série B (mode rafale), sont recommandées pour l’assurance qualité (QA) et les tests. L’utilisation de ces séries dans l’environnement de production limite la capacité de calcul une fois les crédits CPU épuisés.

Pour les applications connues telles que SQL Server, Oracle, RDS (Remote Desktop Services), Azure Virtual Desktop, IIS ou SharePoint, il existe des articles Azure Best Practices qui incluent des recommandations pour une configuration minimale pour ces charges de travail.

Problèmes persistants de processeur élevé

Si le problème se produit actuellement, c’est la meilleure occasion de capturer la trace du processus pour déterminer la cause du problème. Vous pouvez utiliser les outils existants que vous utilisiez pour les serveurs Windows sur site pour localiser le processus. Les outils suivants sont recommandés par le support Azure pour les machines virtuelles Azure.

PerfInsights

PerfInsights est l’outil recommandé par le support Azure pour les problèmes de performances des machines virtuelles. Il est conçu pour couvrir les meilleures pratiques et des onglets d’analyse dédiés pour les graphiques CPU, mémoire et E/S haute résolution. Vous pouvez l’exécuter à la demande via le portail Azure ou depuis la machine virtuelle. Vous pouvez partager les données avec l’équipe de support Azure.

Exécuter PerfInsights

PerfInsights est disponible sous les systèmes d’exploitation Windows et Linux. Pour Windows, voici les options.

Exécuter et analyser des rapports via le portail Azure

Lorsqu’il est installé via le portail Azure, il installe une extension sur la machine virtuelle. Les utilisateurs peuvent également installer PerfInsights en tant qu’extension en accédant directement à Extensions dans le panneau de la machine virtuelle, puis en sélectionnant l’option de diagnostic des performances.

Portail Azure Option 1

Parcourez la lame de machine virtuelle et sélectionnez l’option Diagnostics de performance. Il vous sera demandé d’installer l’option (utilise des extensions) sur la machine virtuelle pour laquelle vous l’avez sélectionnée.

Capture d’écran du bouton Installer les diagnostics de performances dans l’option Diagnostics de performances.

Portail Azure Option 2

Accédez à Diagnostiquer et résoudre les problèmes dans le panneau de la machine virtuelle et recherchez Problèmes de performances de la machine virtuelle.

Capture d’écran des problèmes de performances de machine virtuelle dans l’option Diagnostiquer et résoudre le problème.

Si vous sélectionnez Dépanner, l’écran d’installation de PerfInsights se charge.

Si vous sélectionnez Installer, l’installation propose différentes options de collecte.

Capture d’écran des paramètres d’analyse des performances dans l’option Diagnostics des performances.

Les options numérotées dans la capture d’écran se rapportent aux commentaires suivants :

  1. Pour l’option CPU élevé, sélectionnez Analyse des performances ou Avancé.

  2. Lorsque vous ajoutez des symptômes ici, ils seront ajoutés au rapport, ce qui vous aide à partager des informations avec le support Azure.

  3. Sélectionnez la durée de la collecte des données. Pour l’option High-CPU, sélectionnez au moins 15 minutes ou plus. En mode portail Azure, vous pouvez collecter jusqu’à 15 minutes de données. Pour des périodes de collecte plus longues, vous devez exécuter le programme en tant qu’exécutable dans la VM.

  4. Si le support Azure vous demande de collecter ces données, vous pouvez ajouter le numéro de ticket ici. Ce champ est facultatif.

  5. Sélectionnez ce champ pour accepter le contrat de licence utilisateur final (CLUF).

  6. Sélectionnez ce champ si vous avez l’intention de mettre ce rapport à la disposition de l’équipe de support Azure qui aide sur ce cas.

Le rapport est stocké sur l’un des comptes de stockage sous votre abonnement. Il est disponible pour voir et télécharger plus tard.

Exécutez PerfInsights à partir de la machine virtuelle

Cette méthode peut être utilisée si vous avez l’intention d’exécuter PerfInsights pendant des durées plus longues. L’article PerfInsights donne une présentation détaillée des différentes commandes et indicateurs requis pour exécuter PerfInsights en tant qu’exécutable. Pour une utilisation intensive du processeur, vous aurez besoin de l’un des modes suivants :

  • Scénario avancé

    • PerfInsights /run advanced xp /d 300 /AcceptDisclaimerAndShareDiagnostics
  • Scénario de ralentissement de la machine virtuelle (performances)

    • PerfInsights /run vmslow /d 300 /AcceptDisclaimerAndShareDiagnostics /sa <StorageAccountName> /sk <StorageAccountKey>

La sortie de la commande se trouvera dans le même dossier où vous avez enregistré l’exécutable PerfInsights.

Que rechercher dans le rapport

Après avoir exécuté le rapport, l’emplacement du contenu varie selon qu’il a été exécuté via le portail Azure ou en tant qu’exécutable. Pour l’une ou l’autre option, accédez au dossier du journal généré ou téléchargez (si le portail Azure) localement pour analyse.

Exécuter via le portail Azure

Capture d’écran d’un diagnostic de performances à fort impact.

Capture d’écran du bouton Télécharger le rapport dans la page du rapport de diagnostic des performances.

Exécuter à partir de la VM

La structure de votre dossier doit ressembler aux images suivantes :

Capture d’écran du dossier de sortie et du fichier HTML du rapport PerfInsight dans votre structure de dossiers.

Capture d’écran de GeneralCounters_000001.blg et System.evtx dans votre structure de dossiers.

  1. Toutes les collections supplémentaires telles que Perfmon, Xperf, Netmon, les journaux SMB, les journaux des événements, etc., se trouvent dans le dossier de sortie.

  2. Le rapport proprement dit accompagné d’analyses et de recommandations.

  3. Pour Performance (VMslow) et Avancé, le rapport collecte les informations perfmon pendant la durée de l’exécution de PerfInsights.

  4. Les journaux d’événements affichent une vue rapide des détails utiles au niveau du système ou du processus.

Par où commencer

Ouvrez le rapport PerfInsights. L’onglet Résultats enregistre toute valeur aberrante en termes de consommation de ressources. S’il existe des instances d’utilisation élevée du processeur, l’onglet Résultats les classera dans la catégorie Impact élevé ou Impact moyen.

Capture d’écran de l’onglet Résultats dans la partie CPU de la page Rapport PerfInsights. Dans cet exemple, le niveau d’impact est moyen.

Semblable à l’exemple précédent, PerfInsights a été exécuté pendant 30 minutes. Pendant la moitié de ce temps, le processus mis en évidence épuisait le processeur du côté supérieur. Si le même processus s’était exécuté pendant toute la durée de la collecte, le niveau d’impact serait passé à ÉLEVÉ.

Si vous développez l’événement Résultats, vous verrez plusieurs détails clés. L’onglet répertorie les processus par ordre décroissant, par consommation moyenne du processeur, et indique si le processus était lié au système, à une application appartenant à Microsoft (SQL, IIS) ou à un processus tiers.

Plus de détails

Il existe un sous-onglet dédié sous CPU qui peut être utilisé pour une analyse de modèle détaillée, par cœur ou par processus.

L’onglet Principaux consommateurs de CPU, qui comporte deux sections distinctes, vous permet de consulter les statistiques par processeur. La conception de l’application est souvent monothread ou elle-même liée à un seul processeur. Dans ce scénario, un ou quelques cœurs s’exécutent à 100 %, tandis que d’autres cœurs s’exécutent aux niveaux attendus. Ces scénarios sont plus complexes car le processeur moyen sur le serveur semble fonctionner comme prévu, mais les processus qui sont épinglés sur des cœurs à forte utilisation seront plus lents que prévu.

Capture d’écran de l’onglet Principaux consommateurs de CPU dans la partie CPU de la page Rapport PerfInsights, qui affiche la période d’analyse des diagnostics de performance et les périodes d’utilisation élevée du CPU.

La deuxième section (tout aussi importante) est Principaux consommateurs de CPU de longue durée. Cette section affiche à la fois les détails du processus et leur modèle d’utilisation du processeur. La liste est triée en ayant des consommateurs de CPU moyens élevés en haut.

Capture d’écran de la section Principaux consommateurs de CPU de longue durée.

Ces deux onglets suffiront à définir le chemin des prochaines étapes de dépannage. En fonction du processus à l’origine de la condition de processeur élevé, vous devrez répondre aux questions posées précédemment. Les processus tels que SQL Server (sqlservr.exe) ou IIS (w3wp.exe) nécessitent une exploration spécifique des modifications de requête ou de code à l’origine de cette condition. Pour les processus système tels que WMI ou Lsass.exe, vous devez suivre un chemin différent.

Pour les processus liés aux machines virtuelles Azure, tels que RDAgent, OMS et les exécutables d’extension de surveillance, vous devrez peut-être corriger une nouvelle build ou version en obtenant l’aide de l’équipe de support Azure.

Perfmon

Perfmon est l’un des tout premiers outils de dépannage d’un problème de ressources sur Windows Server. Il ne donne pas un rapport clair contenant des recommandations ou des conclusions. Au lieu de cela, l’utilisateur doit explorer les données collectées et utiliser un filtre spécifique sous les différentes catégories de compteurs.

PerfInsights collecte Perfmon en tant que journal supplémentaire pour les scénarios VMSlow et avancés. Cependant, Perfmon peut être collecté indépendamment et présente ces avantages supplémentaires :

  • Il peut être collecté à distance.

  • Il peut être planifié via les Tâches.

  • Il peut être collecté pour des durées plus longues ou en mode continu en utilisant la fonction de roulement.

Considérez le même exemple que celui affiché dans PerfInsights pour voir comment Perfmon affiche ces données. Les catégories de compteur requises sont les suivantes :

  • Informations sur le processeur > %Temps du processeur> _Total

  • Traiter > %ProcessorTime > Toutes les instances

Par où commencer

Les noms des fichiers de sortie de Perfmon ont une extension .blg. Vous pouvez collecter ces fichiers indépendamment ou en utilisant PerfInsights. Pour cette discussion, vous utiliserez le Perfmon .blg qui est inclus dans les données PerfInsights et qui a été collecté selon l’exemple précédent.

Aucun rapport par défaut prêt à l’emploi n’est disponible dans Perfmon. Il existe différentes vues qui modifient le type de graphique, mais la filtration des processus (ou le travail requis pour identifier les processus coupables) est manuelle.

Remarque

L’outil PAL peut consommer des fichiers .blg et générer des rapports détaillés.

Pour commencer, sélectionnez la catégorie Ajouter des compteurs.

  1. Sous Compteurs disponibles, sélectionnez le compteur %ProcessorTime dans la catégorie Informations sur le processeur.

  2. Sélectionnez _Total, qui vous donne les statistiques de tous les cœurs combinés.

  3. Sélectionnez Ajouter. La fenêtre affiche %ProcessorTime sous Compteurs ajoutés.

Capture d’écran de la boîte de dialogue Ajouter des compteurs dans l’Analyseur de performances.

Une fois les compteurs chargés, vous verrez des graphiques de tendance linéaires dans la période de collecte. Vous pouvez sélectionner ou effacer les compteurs. Jusqu’à présent, vous n’avez ajouté qu’un seul compteur.

Capture d’écran des graphiques de tendance linéaires dans la période de collecte.

Chaque compteur aura des valeurs Moyenne, Minimum et Maximum. Concentrez-vous sur les valeurs Moyenne et Maximum, car la valeur moyenne peut varier en fonction de la durée de la collecte de données. Si l’activité élevée du processeur a été observée pendant 10 minutes alors que la collecte globale était de 40 minutes, les valeurs moyennes seront bien inférieures.

Le graphique de tendance précédent montre que le Processeur total se situait à près de 80 % pendant environ 15 minutes.

Identifier le processus

Nous avons identifié que le serveur avait une consommation élevée de CPU pendant une durée spécifiée, mais nous n’avons pas encore identifié le pilote. Contrairement à l’utilisation de PerfInsights, vous devez rechercher manuellement le processus coupable dans ce cas.

Pour cette tâche, vous devez effacer ou supprimer les compteurs %ProcessorTime précédemment ajoutés, puis ajouter une nouvelle catégorie :

  • Traiter > %ProcessorTime > Toutes les instances

Cette catégorie chargera des compteurs pour tous les processus en cours d’exécution à ce moment-là.

Capture d’écran des étapes pour ajouter la nouvelle catégorie.

Sur un ordinateur de production typique, des centaines de processus peuvent être en cours d’exécution. Par conséquent, cela peut prendre un certain temps pour effacer chaque compteur qui semble avoir un graphique de tendance faible ou plat.

Pour accélérer ce processus, utilisez la vue Histogramme et modifiez le type de vue de Ligne à Histogramme, ce qui vous donnera un graphique à barres. Vous constaterez qu’il est plus facile de choisir les processus qui font l’objet d’une utilisation intensive du processeur pendant le temps de collecte.

Comme il y aura toujours une barre pour Total, concentrez-vous sur les barres qui affichent un taux d’épuisement élevé. Vous pouvez supprimer les autres barres pour nettoyer la vue. Maintenant, revenez à la vue Ligne.

Capture d’écran du bouton d’affichage de l’histogramme dans l’Analyseur de performances et un exemple de graphique contenant 2 barres indiquant un taux d’épuisement élevé.

Il est maintenant plus facile d’attraper le processus coupable. Par défaut, les valeurs Max et Min sont des multiples du nombre de cœurs sur le serveur ou de threads du processus.

Capture d’écran d’un graphique de tendance linéaire montrant clairement le processus coupable.

La liste des outils disponibles ne s’arrête pas à PerfInsights pour Perfmon. Vous avez accès à d’autres outils, tels que ProcessMonitor (ProcMon) ou Xperf. Il existe de nombreux outils tiers disponibles à utiliser si nécessaire.

Outils de surveillance Azure

Les machines virtuelles Azure disposent de mesures fiables qui incluent des informations de base telles que le processeur, les E/S réseau et les octets d’E/S. Pour les mesures avancées, telles qu’Azure Monitor, vous n’aurez qu’à effectuer quelques sélections pour configurer et utiliser un compte de stockage que vous spécifiez.

Compteurs de base (par défaut)

Capture d’écran de la page Mesures d’Azure Monitor. Dans cet exemple, l’option Pourcentage de processeur dans le paramètre Agrégation est sélectionnée.

Activation d’Azure Monitor

Après avoir activé les mesures Azure Monitor, le logiciel installe une extension sur la machine virtuelle, puis commence à collecter des mesures granulaires, qui incluent les compteurs Perfmon.

Capture d’écran du champ Compte de stockage de diagnostic dans l’onglet Présentation de la page Paramètres de diagnostic.

Les catégories de compteur De base sont définies comme par défaut. Cependant, vous pouvez également définir une collection Personnalisée.

Capture d’écran de l’option Catégories de base dans l’onglet Compteurs de performances de la page Paramètres de diagnostic.

Une fois les paramètres activés, vous pouvez afficher ces compteurs Invités dans la section Mesures. Vous pouvez également définir des Alertes (y compris les e-mails) si les mesures atteignent un certain seuil.

Capture d’écran de Capture d’écran du champ Nom de la mesure et du bouton Nouvelle règle d’alerte de la page Mesures.

Pour plus d’informations sur l’utilisation d’Azure Monitor pour gérer les machines virtuelles Azure, consultez Surveillance des machines virtuelles Azure avec Azure Monitor.

Dépannage réactif

Si le problème s’est déjà produit, vous devez découvrir ce qui a causé le problème de processeur élevé en premier lieu. La position réactive peut être délicate. Le mode de collecte de données ne sera pas aussi utile car le problème s’est déjà produit.

S’il s’agit d’un problème ponctuel, il peut être difficile de déterminer quelle application l’a causé. Si la machine virtuelle Azure a été configurée pour utiliser OMS ou un autre suivi de diagnostic, vous pouvez toujours obtenir des informations sur la cause du problème.

Si vous avez affaire à un modèle répétitif, collectez les données pendant la période où le problème va probablement se produire ensuite.

PerfInsights n’a pas encore de fonctionnalité Exécution planifiée. Cependant, Perfmon peut être exécuté et planifié via la ligne de commande.

Commande Logman

La commande Logman Create Counter est utilisée pour exécuter la collecte Perfmon via la ligne de commande, pour la planifier via le Gestionnaire de tâches ou pour l’exécuter à distance.

Échantillon (comprend le mode de collecte à distance)

Logman create counter LOGNAME -u DOMAIN\USERNAME * -f bincirc -v mmddhhmm -max 300 -c "\\SERVERNAME\LogicalDisk(*)\*" "\\SERVERNAME\Memory\*" "\\SERVERNAME\Network Interface(*)\*" "\\SERVERNAME\Paging File(*)\*" "\\SERVERNAME\PhysicalDisk(*)\*" "\\SERVERNAME\Process(*)\*" "\\SERVERNAME\Redirector\*" "\\SERVERNAME\Server\*" "\\SERVERNAME\System\*" "\\SERVERNAME\Terminal Services\*" "\\SERVERNAME\Processor(*)\*" "\\SERVERNAME\Cache\*" -si 00:01:00

Logman.exe peut également être démarré à partir d’un ordinateur de machine virtuelle Azure homologue dans le même VNET.

Pour en savoir plus sur ces paramètres, consultez Compteur de création logman.

Une fois les données Perfmon collectées pendant que le problème se produit, les étapes restantes pour analyser les données sont les mêmes que celles décrites précédemment.

Conclusion

Pour tout problème de performances, la compréhension de votre charge de travail est essentielle pour résoudre le problème. Les options sur différentes références SKU de machine virtuelle et différentes options de stockage sur disque doivent être évaluées en gardant l’accent sur la charge de travail de production. Le processus de test des solutions sur différentes machines virtuelles peut vous aider à prendre la meilleure décision.

Étant donné que les opérations de l’utilisateur et la quantité de données varient, conservez toujours une mémoire tampon dans les capacités de calcul, de mise en réseau et d’E/S de la machine virtuelle. Maintenant, tout changement soudain dans la charge de travail n’a pas un effet aussi important.

Si vous prévoyez que la charge de travail augmentera bientôt, passez à un SKU plus élevé qui a plus de puissance de calcul. Si la charge de travail est intensive en calcul, choisissez judicieusement les SKU de VM.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.