我目前正在尝试在Ubuntu 12.04上运行一个长时间运行的Python脚本。 机器运行在数字海洋液滴上。 它没有可见的内存泄漏(顶部显示恒定的内存)。 在运行没有事件(没有未捕获的exception,使用的内存不增加)大约12小时后,脚本被杀害。
系统日志中与脚本相关的唯一消息是
Sep 11 06:35:06 localhost kernel:[13729692.901711] select 19116(python),adj 0,size 62408,kill
Sep 11 06:35:06 localhost kernel:[13729692.901713] send sigkill to 19116(python),adj 0,size 62408
我在Ubuntu 12.04之前(和其他脚本)遇到类似的问题,但是日志包含脚本被杀手杀死的附加信息。
这些脚本以及这个脚本占用了最多30%的可用内存。
由于我无法find任何实际代码的问题,这可能是一个操作系统的问题? 如果是这样,我该如何解决它?
你的过程确实是被杀手杀死的。 日志消息“select … to kill”暗示了这一点。
可能你的脚本没有做错任何事情,但是因为它使用了最多的内存而选择了被杀。
您必须提供更多的可用内存,如果可以的话,通过添加更多(虚拟)RAM,将其他服务从本机移动到另一个服务器,或尝试优化脚本中的内存使用情况。
请参阅例如使用/ var / log / messages调试用于调试提示的内存不足 。 您可以尝试免除您的脚本被杀害: 如何永久设置守护进程的OOM杀手调整? 但是经常随意杀死一些进程可能会使整个机器处于不稳定的状态。 最后,你将不得不整理内存需求,然后确保有足够的内存用于峰值负载。