Python脚本在Ubuntu 12.04中被杀死

时间:2014-09-12 08:49:17

标签: python linux ubuntu memory out-of-memory

我目前正在尝试在Ubuntu 12.04上运行一个长时间运行的python脚本。机器在Digital Ocean液滴上运行。它没有可见的内存泄漏(顶部显示常量内存)。在没有事故的情况下运行(没有未捕获的异常且使用的内存不会增加)大约12个小时后,脚本就会被杀死。

syslog中与脚本相关的唯一消息是

Sep 11 06:35:06 localhost内核:[13729692.901711]选择19116(python),adj 0,大小62408,杀死

Sep 11 06:35:06 localhost内核:[13729692.901713]发送sigkill为19116(python),adj 0,size 62408

我在Ubuntu 12.04之前(使用其他脚本)遇到过类似的问题,但是日志中包含脚本被oom-killer杀死的其他信息。

这些脚本以及此脚本占用的内存最多占可用内存的30%。

由于我无法找到实际代码的任何问题,这可能是操作系统问题吗?如果是这样,我该怎么做呢?

1 个答案:

答案 0 :(得分:5)

你的过程确实被oom-killer杀死了。日志消息“select ... to kill”暗示了这一点。

可能你的脚本没有做错任何事,但它被选中被杀死,因为它使用了最多的内存。

您必须提供更多可用内存,方法是添加更多(虚拟)RAM,将其他服务从此计算机移动到另一台服务器,或者尝试优化脚本中的内存使用量。

参见例如Debug out-of-memory with /var/log/messages用于调试提示。您可以尝试避免脚本被杀死:How to set OOM killer adjustments for daemons permanently?但是经常随机杀死一些进程可能会使整个机器处于不稳定状态。最后,您必须整理内存要求,然后确保有足够的内存用于峰值负载。