Analyse de la charge serveur

Comment surveiller l'utilisation du CPU, de la mémoire vive, du disque et du réseau sur un serveur Linux.

La charge serveur désigne le pourcentage d'utilisation des ressources clés — CPU, RAM et espace disque. Surveiller ces métriques permet d'identifier rapidement la cause des problèmes de performance.

Le matériel d'un serveur se décompose en quatre composants principaux : CPU, mémoire, disque et interface réseau. L'analyse de charge consiste à collecter et à interpréter les statistiques de chacun.

CPU

L'utilitaire top offre une vue en temps réel de l'utilisation du CPU :

top

Exemple de sortie :

top - 13:29:39 up 7 days,  1:10,  1 user,  load average: 0.03, 0.03, 0.00
Tasks: 104 total,   2 running, 102 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  1.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  1.3 si,  0.3 st
MiB Mem :    969.5 total,     68.8 free,    635.9 used,    264.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    106.7 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    823 mysql     20   0 1852008 401812      0 S   1.0  40.5  81:24.20 mysqld
     13 root      20   0       0      0      0 R   0.3   0.0  26:11.00 rcu_sched
    695 redis     20   0   66776   4216   2100 S   0.3   0.4  19:55.21 redis-server

Métriques clés à surveiller :

  • us — temps CPU consacré aux processus utilisateur. Une valeur élevée indique que votre application sollicite fortement le CPU.
  • id — temps d'inactivité du CPU. Doit rester entre 80 et 100 % dans des conditions normales.
  • wa — temps d'attente des opérations d'E/S. Une valeur élevée signale une surcharge du sous-système disque.

Si us dépasse régulièrement 20 %, envisagez d'optimiser votre application ou de faire évoluer votre infrastructure.

Pour des statistiques par cœur, installez mpstat depuis le paquet sysstat :

apt-get install sysstat
mpstat -P ALL

Exemple de sortie :

Linux 5.15.0-46-generic (dsde1139-22869.fornex.org)    09/06/2022  _x86_64_   (1 CPU)

02:37:21 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
02:37:21 PM  all    0.90    0.00    0.74    0.13    0.00    0.96    0.32    0.00    0.00   96.95
02:37:21 PM    0    0.90    0.00    0.74    0.13    0.00    0.96    0.32    0.00    0.00   96.95

Pour une vue plus visuelle, htop affiche la charge CPU dans un format facile à lire :

apt-get install htop
htop

htop Monitoring du CPU dans htop

Mémoire

Utilisez la commande free pour vérifier l'utilisation de la RAM :

free

Exemple de sortie :

               total        used        free      shared  buff/cache   available
Mem:          992724      655200       73968       86748      263556      104972
Swap:              0           0           0

Portez une attention particulière à Swap — il indique quelle quantité d'espace disque est utilisée comme mémoire de débordement lorsque la RAM est épuisée. Un faible niveau de RAM libre n'est pas critique en soi, mais une augmentation du Swap nécessite une action immédiate : ajoutez de la mémoire ou répartissez la charge sur plusieurs serveurs.

Pour une analyse détaillée de l'utilisation de la mémoire :

cat /proc/meminfo

Exemple de sortie :

MemTotal:         992724 kB
MemFree:           73192 kB
MemAvailable:     104864 kB
Buffers:           10856 kB
Cached:           226868 kB
SwapCached:            0 kB
...

Disque

Commencez par vérifier l'espace disque disponible :

df -h

Exemple de sortie :

Filesystem      Size  Used Avail Use% Mounted on
tmpfs            97M  732K   97M   1% /run
/dev/vda1       9.8G  8.5G  846M  92% /
tmpfs           485M     0  485M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            97M     0   97M   0% /run/user/0

La colonne Use% indique le taux d'occupation de chaque partition.

Pour surveiller l'activité de lecture/écriture par processus, utilisez iotop :

apt-get install iotop
iotop

Exemple de sortie :

Total DISK READ:         0.00 B/s | Total DISK WRITE:         0.00 B/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:       0.00 B/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
      1 be/4 root        0.00 B/s    0.00 B/s  ?unavailable?  init
      2 be/4 root        0.00 B/s    0.00 B/s  ?unavailable?  [kthreadd]
    ...

Métriques clés :

  • Actual DISK READ — données effectivement lues depuis le disque (cache pris en compte).
  • Actual DISK WRITE — données effectivement écrites sur le disque.

Recommandations en cas de forte charge disque :

  • Forte charge de lecture depuis l'application — activez le cache APC.
  • Forte charge de lecture depuis la base de données — revoyez la configuration de votre base de données.
  • Forte charge de lecture depuis le serveur web — envisagez de mettre en place un cache HTTP.
  • Forte charge d'écriture — vérifiez que les journaux d'accès et de débogage sont désactivés ; la base de données ou les téléversements de fichiers sont les causes les plus probables.

Réseau

L'utilitaire cbm affiche le trafic réseau en temps réel par interface :

apt-get install cbm
cbm

Exemple de sortie :

Interface      Receive          Transmit         Total
lo             0.00 B/s         0.00 B/s         0.00 B/s
eth0           35.90 kB/s       758.75 B/s       36.65 kB/s

Un trafic réseau élevé n'est pas problématique en soi, mais des valeurs proches du pic de manière soutenue sont le signal qu'il est temps d'anticiper une montée en charge.

Statistiques combinées

L'utilitaire dstat affiche un récapitulatif en temps réel de tous les sous-systèmes, mis à jour chaque seconde :

apt-get install dstat
dstat

Exemple de sortie :

--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw
  2   1  97   0   0|  35k   29k|   0     0 |   0     0 | 683   702
  1   0  99   0   0| 124k    0 |  39k 1162B|   0     0 |1003   822
  3   4  86   6   1|3580k 8776k|  37k  522B|   0     0 |1161  1018

Colonnes clés :

  • total-cpu-usage — charge du CPU.
  • dsk/total — activité disque.
  • net/total — activité réseau.

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter