我目前正在尝试在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%。
由于我无法找到实际代码的任何问题,这可能是操作系统问题吗?如果是这样,我该怎么做呢?
答案 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?但是经常随机杀死一些进程可能会使整个机器处于不稳定状态。最后,您必须整理内存要求,然后确保有足够的内存用于峰值负载。