Existe-t-il un moyen d'obtenir un vidage de mémoire ou de pouvoir déboguer un processus qui a été tué par oom-killer?
Ou même configurer oom-killer pour essayer de tuer un processus en utilisant ABRT à la place?
Une autre approche consiste à désactiver la surcharge de la mémoire.
Pour restaurer un semblant de raison à votre gestion de la mémoire:
- Désactiver le
vm.oom-kill = 0
module OOM Killer ( placé dans /etc/sysctl.conf)- Désactiver la surcharge de mémoire (mise
vm.overcommit_memory = 2
en place/etc/sysctl.conf
)Ces paramètres feront que Linux se comportera de la manière traditionnelle (si un processus demande plus de mémoire que ce qui est disponible
Notez qu'il s'agit d'une valeur ternaire:malloc()
échouera et le processus demandant la mémoire devrait faire face à cet échec).
- 0 = "estimer si nous avons suffisamment de RAM"
- 1 = "Toujours dire oui"
- 2 = "dites non si nous n'avons pas la mémoire"
Cela forcera l'application à gérer le manque de mémoire lui-même, et peut-être que ses journaux / coredump / etc. pourraient vous donner quelque chose d'utile.
REMARQUE: lorsque votre système manque de mémoire, vous ne pourrez pas générer de nouveaux processus! Vous pouvez être exclu du système.
ce qui semble être le maximum que vous pouvez obtenir du noyau pour afficher les erreurs de mémoire insuffisante.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
la source