Outils pour utilisateurs

Outils du site


mon_serveur_swappe_sans_raison

Mon serveur swappe sans raison

Votre serveur Linux est (largement) doté d'assez de mémoire pour faire son travail mais, après quelques semaines (jours) d'utilisation, il commence à swapper…

La solution brutale est d'effectuer un reboot du serveur. Le résultat en terme d'utilisation de la mémoire est garanti mais cela entraîne l'interruption des services. Imparable ! À vous d'estimer les répercussions de cette interruption.

La manière “propre” serait d'analyser le mécanisme qui conduit à l'utilisation “excessive” de mémoire vive, conduisant le système à faire appel au swap. Il en découlera un tuning des applications et du système qui devrait éviter que la mémoire vive soit mal utilisée.

Entre ces deux extrêmes, un nettoyage manuel périodique de la mémoire permet de libérer de la mémoire sans entraîner d'interruption de service.

Vider les caches

Une raison fréquente de consommation excessive est une mauvaise gestion dynamique des caches. Après un certain temps de fonctionnement, la mémoire est massivement consommée par des caches1). Vider ces caches permet alors de regagner de la mémoire vive.

# sync                // s'assurer que toutes les écritures en attente ont bien été copiées sur disque

puis lancer une des commandes suivantes, en fonction de ce que l'on veut nettoyer

# echo 1 > /proc/sys/vm/drop_caches                // pour libérer les seules pages (mémoire paginée)
# echo 2 > /proc/sys/vm/drop_caches                // pour libérer les seules dentries et inodes
# echo 3 > /proc/sys/vm/drop_caches                // pour libérer les pages, dentries et inodes

Voir notes de bas de page pour dentry2) et inode 3).

Une fois la mémoire vive nettoyée, on peut vider le swap (comprendre : transférer en mémoire le contenu du swap).

S'assurer que la quantité de mémoire vive libre est suffisante4) pour recevoir les données présentes en swap. Sinon vous risquez d'endommager votre système.
$ free
# swapoff -a
# swapon -a
1)
En soi, c'est un excellent comportement du système. Tant qu'une partie de la mémoire vive est durablement inutilisée, autant s'en servir pour effectuer des opérations courantes, bien plus vite que si elles étaient réalisées sur disque.
2)
A dentry is the glue that holds inodes and files together by relating inode numbers to file names. Dentries also play a role in directory caching which, ideally, keeps the most frequently used files on-hand for faster access. File system traversal is another aspect of the dentry as it maintains a relationship between directories and their files.
3)
An inode exists in, or on, a file system and represents metadata about a file. For clarity, all objects in a Linux or UNIX system are files; actual files, directories, devices, and so on. Please note that, among the metadata contained in an inode, there is no file name as humans think of it, this will be important later. An inode contains essentially information about ownership (user, group), access mode (read, write, execute permissions) and file type.
4)
Si vous ne comprenez pas ce que cela signifie, mieux vaut vous arrêter là.
mon_serveur_swappe_sans_raison.txt · Dernière modification : 2022/02/18 09:44 de 127.0.0.1