aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Serveur de Jeu

Commandes de performance Linux : trouver les goulots

Quand un serveur de jeu saccade, qu'une application web rame ou qu'un VPS cesse soudain de répondre, votre première tâche est de répondre au « pourquoi » avec des chiffres. Les bonnes commandes de performance Linux existent précisément pour cela : au lieu de deviner, elles vous montrent en quelques secondes si le goulot d'étranglement se situe au niveau du CPU, de la mémoire, du disque ou du réseau. Dans cet article, je passe en revue le quatuor top, htop, iostat et vmstat à travers des scénarios réels, et j'explique comment lire les chiffres qu'ils produisent.

Commencez par la charge moyenne : top

top est livré avec quasiment toutes les distributions, c'est donc le premier endroit à consulter. La ligne load average en haut indique le nombre de tâches exécutables sur les 1, 5 et 15 dernières minutes. La règle pratique : divisez cette valeur par le nombre de cœurs. Trouvez ce nombre avec nproc ; sur une machine à 4 cœurs, une charge de 4 correspond à environ 100 % d'utilisation.

nproc            # nombre de cœurs
uptime           # uniquement la ligne de charge moyenne
top              # surveillance interactive

Dans top, lire les champs de la ligne CPU affine le diagnostic : us est le CPU consommé par les applications utilisateur, sy le CPU noyau (système), et wa l'attente disque/IO. Un wa élevé signifie « le CPU est inactif mais attend le disque » et vous renvoie directement vers le stockage. La touche P trie les processus par CPU et M par mémoire ; vous voyez ainsi immédiatement quel processus consomme le plus une ressource donnée.

Une vue plus lisible : htop

htop est la version moderne, colorée et utilisable à la souris de top. Il est rarement installé par défaut ; ajoutez-le avec apt install htop ou dnf install htop. Les barres en haut montrent chaque cœur séparément, ce qui révèle les cas où un seul cœur est saturé (typique des processus mono-thread).

  • F6 change la colonne de tri pour amener le processus le plus coûteux en tête.
  • F4 filtre pour n'afficher que le processus qui vous intéresse (par exemple mysqld ou le binaire de votre serveur de jeu).
  • F5 la vue arborescente clarifie quel processus parent a engendré quels enfants.

Dans la barre mémoire, le vert correspond à la RAM utilisée et le jaune aux tampons/cache. Il est tout à fait normal que Linux dédie la RAM libre au cache ; avant de paniquer parce que « la RAM est pleine », confirmez le vrai goulot en regardant l'usage du swap. Si le swap ne cesse de grimper, la mémoire est réellement insuffisante.

Pour les goulots disque : iostat

Si vous avez vu un wa élevé, iostat est la suite. L'outil est fourni dans le paquet sysstat (apt install sysstat). Vous obtenez des données utiles par échantillonnage périodique, pas par un instantané unique :

iostat -x 2      # stats étendues toutes les 2 secondes

Les colonnes critiques sont : %util, le pourcentage de temps où le disque était occupé ; au-dessus de 90 % de façon constante, le disque est saturé. await est le temps moyen de complétion d'une requête d'E/S (ms) ; attendez-vous à un chiffre à un seul chiffre sur un SSD et à des dizaines de ms sur un disque mécanique, donc des valeurs bien au-delà sont un signal d'alerte. r/s et w/s donnent le nombre d'opérations de lecture/écriture par seconde. Ignorez la première ligne, qui est la moyenne depuis le démarrage ; regardez à partir de la deuxième.

Sur un serveur de base de données, des await et %util élevés signifient soit que vos requêtes sollicitent le disque inutilement, soit que la RAM est trop faible et que le système retourne sans cesse au disque. La solution n'est souvent pas un disque plus rapide, mais l'indexation de vos requêtes ou l'ajout de mémoire.

Pour la vue d'ensemble : vmstat

vmstat résume CPU, mémoire, swap et E/S sur une seule ligne, ce qui en fait un outil de « premier diagnostic » idéal. Lancez-le aussi sur un intervalle :

vmstat 2         # résumé toutes les 2 secondes

Les champs à lire : la colonne r est le nombre de processus prêts à s'exécuter mais en attente du CPU ; s'il reste supérieur au nombre de cœurs, vous avez un goulot CPU. b compte les processus en sommeil ininterruptible (généralement en attente d'E/S). si/so sont la mémoire transférée vers/depuis le swap par seconde ; des valeurs non nulles et soutenues sont une preuve solide de pression mémoire. wa est de nouveau l'attente E/S. Enfin, si cs (changements de contexte) et in (interruptions) sont très élevés, vous avez peut-être une charge qui génère des changements de contexte excessifs (par exemple des milliers de processus éphémères).

Un flux de diagnostic pratique

L'approche la plus efficace est d'utiliser ces outils comme un flux plutôt qu'un par un :

  • Étape 1 : avec top ou htop, observez la charge moyenne et quel processus se démarque.
  • Étape 2 : déterminez si le CPU est plein ou si wa est élevé. Si CPU, profilez le processus ; si wa, passez au disque.
  • Étape 3 : avec iostat -x 2, confirmez si le disque est saturé (%util, await).
  • Étape 4 : avec vmstat 2, vérifiez l'usage du swap (si/so) pour clarifier s'il y a une pression mémoire.
  • Étape 5 : en cas de doute sur le réseau, contrôlez le nombre de connexions et le processus en écoute avec ss -s et ss -tnp.

Ces cinq étapes transforment une plainte vague comme « le serveur est lent » en un constat concret tel que « MySQL sature le disque » ou « un seul cœur est bloqué » en quelques minutes. Pour une surveillance continue, vous pouvez passer à des outils comme Netdata ou Prometheus qui s'appuient sur ces mêmes commandes ; mais savoir d'abord lire les commandes manuelles rend aussi l'interprétation des graphiques bien plus aisée.

Questions fréquentes

Dois-je utiliser top ou htop ?

Les deux montrent les mêmes données sous-jacentes. top est fiable en urgence car il est toujours présent ; htop est plus lisible, navigable à la souris et facilite des tâches comme tuer ou filtrer des processus. Pour l'usage quotidien, je recommande d'installer htop tout en sachant lire top.

Quelle charge moyenne doit m'inquiéter ?

Il n'y a pas de seuil unique ; divisez la valeur par le nombre de cœurs. Sur un système à 4 cœurs, environ 4 signifie pleine charge et 8 le double. Mais pour distinguer si la charge vient du CPU ou de l'attente E/S, vérifiez toujours aussi la valeur wa.

Pourquoi la première ligne d'iostat est-elle différente ?

La première ligne est la moyenne accumulée depuis le démarrage et ne reflète pas l'état actuel. Pour voir le comportement réel, lancez-le sur un intervalle comme iostat -x 2 et lisez à partir de la deuxième ligne.

Votre serveur lutte contre les goulots d'étranglement ? Nous pouvons diagnostiquer ensemble la performance de votre serveur de jeu, VPS ou base de données et la transformer en solution durable. Contactez-moi et accélérons votre serveur.

Bu kategorideki tüm yazılar →

Devamı için