Mémoire saturée, swap et processus tués
Pourquoi un service disparaît sans prévenir, comment ajouter du swap, et quand le swap est une bonne ou une mauvaise idée.
Votre service tournait, et il a disparu sans erreur dans ses propres journaux. Neuf fois sur dix, c'est le noyau qui l'a tué pour libérer de la mémoire. Il le note, mais ailleurs.
sudo dmesg -T | grep -i 'out of memory'
sudo journalctl -k | grep -i 'killed process'Si vous y trouvez une ligne « Out of memory: Killed process 1234 (mysqld) », vous avez votre réponse : la machine a manqué de mémoire et le noyau a sacrifié le plus gros consommateur.
Ajouter du swap
Le swap est une zone du disque utilisée comme mémoire de secours. C'est beaucoup plus lent que la mémoire vive, mais infiniment mieux qu'un processus tué.
- 1
Créer le fichier
Deux gigaoctets conviennent à la plupart des VPS. Le dimensionner à la taille de la mémoire vive est une bonne règle jusqu'à 4 Go.
bashsudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - 2
Le rendre permanent
Sans cette ligne dans /etc/fstab, le swap disparaît au redémarrage.
bashecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab - 3
Vérifier
bashfree -h swapon --show
Régler l'empressement du noyau
swappiness décide à quel point le noyau préfère écrire sur le disque plutôt que de libérer du cache. La valeur par défaut, 60, est pensée pour un ordinateur de bureau. Sur un serveur, 10 est plus adapté : le swap sert de filet, pas de mémoire courante.
cat /proc/sys/vm/swappiness
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl --systemLe swap n'est pas de la mémoire
Une machine qui swappe en permanence est une machine sous-dimensionnée : chaque accès coûte mille fois plus cher qu'en mémoire vive, et l'application devient poussive sans qu'aucun voyant ne passe au rouge. Le swap achète du temps pour constater le problème, pas pour vivre avec.
Trouver qui consomme
ps aux --sort=-%mem | head -10Les suspects habituels : une base de données dont le cache est réglé plus grand que la machine, un serveur Java avec un -Xmx trop généreux, ou un site PHP dont le nombre de processus autorisés dépasse ce que la mémoire permet.
Bloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.
Ouvrir un ticket