Aller au contenu

Fuite mémoire

Une fuite mémoire dans SysAdmin Crisis : un processus qui ne rend jamais la mémoire. Sa signature dans les logs et comment la distinguer des autres.

Dernière mise à jour:

La fuite est l'incident le plus discret du catalogue. Rien ne pique, rien ne déborde — un seul processus sur une seule machine cesse simplement de rendre la mémoire.

Ce qu'elle fait

La RAM d'une machine grimpe sur des minutes, pas des secondes. Quand elle atteint le plafond, l'OOM killer se met à emporter des processus, ce qui est en soi une panne de service. Quand il n'y a plus rien à emporter, la machine passe à DOWN.

Le détail important, c'est que c'est local. Cela touche une machine et cela touche la RAM — ni la bande passante, ni le disque, ni le parc de serveurs.

La signature dans les logs

Le pourcentage de mémoire grimpe d'abord dans monit ; quand il atteint le plafond, le noyau fait appel à l'OOM killer. L'enregistrement OOM dit qui a invoqué le killer, pas le PID du processus qui fuit :

02:41:08 web-02 monit[601]: 'web-02' mem usage of 80% matches resource limit [mem usage > 75.0%]
02:43:52 web-02 monit[601]: 'api-worker' mem usage of 38% matches resource limit [mem usage > 25.0%]
02:45:10 web-02 kernel: nginx invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0

free donne le tableau d'ensemble, et top montre quel processus grossit. Triez la liste des processus par utilisation de la mémoire ; le processus qui fuit n'est pas forcément celui nommé dans l'enregistrement OOM.

Si vous n'y touchez pas

L'OOM killer parcourt la liste des processus dans l'ordre, si bien que vous perdez des fonctions petit à petit avant de perdre la machine. Comme la machine passe à CRIT puis à DOWN, le coût en disponibilité ne vient pas d'une pénalité distincte mais de l'état du serveur — plus la dette de SLA une fois le délai de grâce écoulé.

La distinguer des autres

Ressemble àCe qui les distingue
Flood DDoSUn flood fait monter le CPU et la bande passante sur les machines web ; une fuite fait monter la RAM sur une seule.
Disque pleinAucun des deux ne pique, tous deux rampent ; mais l'un touche la RAM et l'autre un point de montage. df tranche en une ligne.
Tâche qui s'emballeLes deux nomment un processus dans la sortie de top. Une tâche qui s'emballe bloque le CPU ; une fuite fait grossir la mémoire.

Quand elle apparaît

Première nuit2
Nécessiteune machine web
Poids100 — à égalité avec les incidents les plus probables du jeu
Simultanémentune instance