linux-kernel kernel - Trouver quel processus a été tué par le tueur Linux OOM




github version (5)

Essayez ceci:

grep "Killed process" /var/log/syslog

Lorsque Linux est à court de mémoire (OOM), le tueur OOM choisit un processus à tuer basé sur des heuristiques (c'est une lecture intéressante: http://lwn.net/Articles/317814/ ).

Comment peut-on déterminer par programme quels processus ont été récemment tués par le tueur du MOO?


Essayez ceci pour ne pas avoir à vous soucier de l'emplacement de vos journaux

dmesg | egrep -i 'killed process'

Essayez ceci:

grep -i 'killed process' /var/log/messages

Maintenant, dstat fournit la fonctionnalité pour savoir dans votre système en cours d'exécution quel processus est candidat pour être tué par un mécanisme oom

 dstat --top-oom
 --out-of-memory---
  kill score
 java           77
 java           77
 java           77

et selon la page de manuel

  --top-oom
          show process that will be killed by OOM the first

Je dois dire que la meilleure façon de prévenir les gels OOM est de ne pas manquer de mémoire virtuelle. Si vous manquez régulièrement de mémoire virtuelle, ou si vous vous en approchez, vous avez de plus gros problèmes.

La plupart des tâches ne gèrent pas très bien les allocations de mémoire ayant échoué, elles ont donc tendance à planter ou à perdre des données. L'exécution de la mémoire virtuelle (avec ou sans overcommit) entraînera l'échec de certaines allocations. C'est généralement mauvais.

De plus, avant que votre système d'exploitation ne manque de mémoire virtuelle, il va commencer à faire des choses comme jeter des pages de bibliothèques partagées, ce qui est susceptible de rendre les performances difficiles à récupérer, ce qui est très mauvais pour le débit.

Mes suggestions:

  • Obtenez plus de ram
  • Exécuter moins de processus
  • Faites en sorte que les processus que vous exécutez utilisent moins de mémoire (cela peut inclure la réparation de fuites de mémoire)

Et peut-être aussi

  • Configurer plus d'espace d'échange

Si cela est utile dans votre cas d'utilisation.

La plupart des serveurs multiprocessus exécutent un nombre configurable (maximum) de processus, de sorte que vous pouvez généralement l'ajuster vers le bas. Les serveurs multithread vous permettent généralement de configurer la quantité de mémoire à utiliser pour leurs tampons, etc. en interne.





linux linux-kernel