Le script Python est tué dans Ubuntu 12.04

Je suis actuellement en train d’essayer de lancer un script python sur Ubuntu 12.04. La machine fonctionne sur une gouttelette numérique. Il n’y a pas de memory leaks visibles (en haut, la mémoire est constante). Après avoir exécuté sans incident (il n’y a pas d’exceptions non capturées et la mémoire utilisée n’augmente pas) pendant environ 12 heures, le script est tué.

Les seuls messages présents dans syslog relatifs au script sont

Sep 11 06:35:06 kernel localhost: [13729692.901711] sélectionnez 19116 (python), adj 0, taille 62408, pour tuer

Sep 11 06:35:06 kernel localhost: [13729692.901713] envoie sigkill à 19116 (python), adj 0, taille 62408

J’ai déjà rencontré des problèmes similaires (avec d’autres scripts) dans Ubuntu 12.04, mais les journaux contenaient alors des informations supplémentaires que les scripts avaient été tuées par oom-killer.

Ces scripts, comme celui-ci, occupent au maximum 30% de la mémoire disponible.

Comme je ne trouve aucun problème avec le code actuel, cela pourrait-il être un problème de système d’exploitation? Si oui, comment puis-je le réparer?

Votre processus a bien été tué par le tueur. Le message de journal “select … to kill” fait allusion à cela.

Probablement votre script n’a rien fait de mal, mais il a été sélectionné pour être tué car il utilisait le plus de mémoire.

Vous devez fournir plus de mémoire libre en ajoutant plus de RAM (virtuelle) si vous le pouvez, en déplaçant d’autres services de cette machine vers une autre, ou en essayant d’optimiser l’utilisation de la mémoire dans votre script.

Voir par exemple Déboguer de la mémoire avec / var / log / messages pour des conseils de débogage. Vous pouvez essayer d’éviter que votre script ne soit tué: comment définir les réglages de tueur OOM pour les démons de manière permanente? Mais souvent, tuer certains processus au hasard peut laisser la machine entière dans un état instable. En fin de compte, vous devrez sortinger les besoins en mémoire, puis vous assurer que suffisamment de mémoire est disponible pour les charges de pointe.