Fuite mémoire et shared memory
La mise en cache sous Linux est due, pour l’essentiel, à la mémoire partagée – shared memory – gérée par le système. Hier après-midi, j’ai observé de forts ralentissements au niveau de mon serveur. Avec la commande free, j’ai pu voir que cette mémoire partagée avait dépassé les 4 Go, ne me laissant plus que quelques miettes de mémoire disponible. Et la machine avait commencé à swapper.
Cela faisait près de 50 jours que cette machine n’a pas été redémarrée. Je suis passé en Fedora 32 le 17 février et l’upgrade nécessite de rebooter le système. L’augmentation anormale de la cette mémoire partagée ressemble en tout point à une sorte de fuite mémoire difficile à identifier a posteriori.
Nettoyer la mémoire partagée
Pour nettoyer la shared memory, entrez à partir de la ligne de commandes :
echo 1 > /proc/sys/vm/drop_caches
Modifier le paramètre noyau shmmax
Vous pouvez contenir la croissance inexorable de la mémoire partagée en modifiant la valeur du paramètre noyau shmmax passée à 2 Go dans la commande ci-dessous :
echo 2147483648 > /proc/sys/kernel/shmmax
Pour la prise en compte de cette modification, tapez :
sysctl -p