GNU/Linux >> Tutoriels Linux >  >> Linux

Dépannage des serveurs lents :comment vérifier le processeur, la RAM et les E/S de disque

Si vous faites du travail d'administrateur système depuis assez longtemps, vous avez vu les redoutables incidents "Le serveur est lent". Pendant longtemps, ces types d'incidents me donnaient un trou dans l'estomac. Comment diable résolvez-vous quelque chose d'aussi subjectif ? Le « lent » d'un utilisateur ordinaire peut simplement être causé par d'autres processus (planifiés ou non) qui s'exécutent et consomment plus de ressources que d'habitude, ou quelque chose peut réellement ne pas fonctionner avec le serveur.

Lorsque j'ai commencé à travailler en tant qu'administrateur système, je répondais immédiatement :"J'ai besoin de plus d'informations à ce sujet." Eh bien, généralement, l'utilisateur n'est pas en mesure de donner plus d'informations, car il ne sait pas ce qui se passe dans les coulisses ou comment expliquer ce qu'il voit autrement que "c'est juste lent". Aujourd'hui, avant même de répondre à l'utilisateur, je vérifie quelques éléments.

Connexion initiale

Il y a beaucoup de choses que vous pouvez dire en vous connectant à l'hôte. Pouvez-vous vous connecter du tout? La connexion est-elle lente ou bloquée ? Le ssh La commande a trois niveaux de débogage, chacun d'eux vous donnant une pléthore d'informations avant même d'être sur le système. Pour activer le débogage, ajoutez simplement un v supplémentaire au -v option. Par exemple, un débogage de niveau trois, que j'utilise exclusivement, serait :

[~]$ ssh -vvv hostname.domain.com

Les "Big 3" (alias CPU, RAM et Disk I/O)

Examinons maintenant les trois principales causes de ralentissement du serveur :le processeur, la RAM et les E/S de disque. L'utilisation du processeur peut entraîner une lenteur globale de l'hôte et des difficultés à effectuer les tâches en temps opportun. Certains outils que j'utilise lorsque je regarde le CPU sont top etsar .

Vérification de l'utilisation du CPU avec top

Le top vous donne un aperçu en temps réel de ce qui se passe avec le serveur. Par défaut, lorsque top démarre, il affiche l'activité de tous les processeurs :

Cette vue peut être modifiée en appuyant sur la touche numérique 1, ce qui ajoute plus de détails concernant les valeurs d'utilisation pour chaque CPU :

Certaines choses à rechercher dans cette vue seraient la charge moyenne (affichée sur le côté droit de la ligne supérieure) et la valeur des éléments suivants pour chaque CPU :

  • us  :Ce pourcentage représente la quantité de CPU consommée par les processus utilisateur.
  • sy  :Ce pourcentage représente la quantité de CPU consommée par les processus système.
  • id  :Ce pourcentage représente le degré d'inactivité de chaque processeur.

Chacune de ces trois valeurs peut vous donner une assez bonne idée en temps réel de la liaison des processeurs par les processus utilisateur ou les processus système.

Pour vraiment expliquer la charge moyenne, il faudrait un article à lui tout seul. Pour les besoins de cet article, je vais parler de généralités. Les trois valeurs moyennes de charge de gauche à droite représentent des moyennes sur une minute, cinq minutes et 15 minutes. Encore une fois, parlant très généralement, si vous constatez que la moyenne sur une minute dépasse le nombre de processeurs physiques dont vous disposez, le système est très probablement lié au processeur.

Remarque : Pour plus d'informations sur la charge moyenne et pourquoi certaines personnes pensent que c'est un chiffre idiot, consultez les recherches approfondies de Brendan Gregg.

Vérification de tous les "Big 3" avec sar

Pour les données historiques de performances du processeur, je m'appuie sur le sar commande, qui est fournie par le sysstat emballer. Sur la plupart des versions serveur de Linux, sysstat est installé par défaut, mais si ce n'est pas le cas, vous pouvez l'ajouter avec le gestionnaire de paquets de votre distribution. Le sar l'utilitaire collecte les données système toutes les 10 minutes via une tâche cron située dans /etc/cron.d/sysstat (CentOS 7.6). Voici comment vérifier tous les "Big 3" à l'aide de sar .

Remarque : Si vous venez d'installer sar pour suivre cet article, donnez d'abord à la commande le temps d'enregistrer les données.

La commande sar -u vous donne des informations sur tous les processeurs du système, à partir de minuit :

Comme avec top , les principales choses à vérifier ici sont %user , %system , %iowait , et %idle . Ces informations peuvent vous indiquer depuis combien de temps le serveur rencontre des problèmes.

Dans l'ensemble, le sar La commande peut fournir beaucoup d'informations. Étant donné que cet article explique juste une vérification rapide de ce qui se passe sur le serveur, consultez man sar pour détailler encore plus ces informations.

Pour vérifier les performances de la RAM, j'utilise sar -r , qui vous donne l'utilisation de la mémoire ce jour :

La principale chose à rechercher dans l'utilisation de la RAM est %memused et %commit . Un mot rapide sur le %commit champ :ce champ peut afficher plus de 100 % puisque le noyau Linux surcharge régulièrement la RAM. Si %commit est constamment supérieur à 100 %, ce résultat pourrait être un indicateur que le système a besoin de plus de RAM.

Pour les performances d'E/S disque, j'utilise sar -d , qui vous donne la sortie d'E/S du disque en utilisant uniquement le nom du périphérique. Pour obtenir le nom des appareils, utilisez sar -dP :

Pour cette sortie, en regardant %util et %await vous donnera une bonne image globale des E/S de disque sur le système. Le %util est assez explicite :c'est l'utilisation de cet appareil. Le await Le champ contient le temps que l'E/S passe dans le planificateur. L'attente est mesurée en millisecondes, et dans mon environnement, j'ai vu que tout ce qui dépasse 50 ms commence à causer des problèmes. Ce seuil peut varier dans votre environnement.

Si l'une de ces commandes montre un problème, vous pouvez revenir en arrière pour voir quand les problèmes de serveur ont commencé en utilisant sar {-u, -r, -d, -dP} -f /var/log/sa/sa<XX> (où XX est le jour du mois que vous souhaitez rechercher).

À ce stade, j'ai généralement une bonne idée de ce qui se passe actuellement sur le serveur et de ce qui s'est passé au cours des dernières 48 heures environ. Je répondrai à l'utilisateur avec des réponses plus éclairées. Par exemple :"Je ne vois aucune indication de lenteur de l'hôte au cours des dernières 24 heures. Veuillez essayer d'utiliser un nouveau profil putty pour ssh et faites-moi savoir si vous continuez à avoir des problèmes."

Un autre exemple :"Je ne vois rien qui cause actuellement des problèmes sur cet hôte, mais j'ai remarqué une charge CPU plus élevée $time . C'est à ce moment-là que vous avez vu des problèmes ? Si c'est le cas, essayez maintenant et faites-moi savoir si vous continuez à rencontrer des problèmes."

Vous avez eu l'idée. Avoir les informations fournies en regardant la connexion initiale puis en exécutant quelques sar commandes, qui me prennent généralement moins de 10 minutes à exécuter, font beaucoup pour éviter plus de questions et parvenir à une résolution plus rapidement.


Linux
  1. Comment vérifier l'intégralité du disque dur pour les erreurs et les secteurs défectueux ?

  2. Comment vérifier l'utilisation du disque du répertoire et l'utilisation de la bande passante ?

  3. Comment vérifier la taille totale de la RAM et l'utilisation de la mémoire sous Linux

  4. Comment purger les caches d'E/S disque sous Linux ?

  5. E/S de disque Linux OOM. Aussi :swap, à quoi ça sert ?

Comment vérifier l'utilisation de l'espace disque sous Linux

10 Commande Linux iostat pour rapporter les statistiques du CPU et des E/S

Comment vérifier les informations du processeur sous Linux

Comment vérifier l'espace disque libre sur Linux [Méthodes Terminal et GUI]

Comment vérifier l'utilisation ou l'utilisation du processeur Linux

Comment vérifier la taille des fichiers et du répertoire sous Linux