python 程序块 挂掉的服务_python 程序被杀死

python里面的error log 完全没被打印,只显示了 6233 已杀死。看大家的例子,推测大概率是因为内存问题,但是要去确认。系统 out of memory, 那么此进程被系统的oom killer杀死。

先到这个路径 下 /proc/sys/vm ,看了配置,有三个跟oom相关的。oom_kill_allocating_task 、panic_on_oom,oom_dump_tasks ,取值分别是0,0,1。

参考大家的博客。

oom_kill_allocating_task 是一个控制在内存耗尽时是否结束那个造成内存耗尽的任务的开关。默认值为 0,表示 OOM Killer 会去扫描完整的任务列表,用启发式算法选一个进程来结束。通常被结束的进程是一个流氓任务内存大户。如果 oom_kill_allocating_task 的值不为 0,哪个任务申请内存的操作造成了内存耗尽,就把那个任务干掉。这样可以避免扫描任务列表这种昂贵的操作。

panic_on_oom,这是一个决定内存耗尽时是否触发内核错误的开关。默认值为 0,内存耗尽时内核让 OOM Killer 去干掉几个内存流氓,让系统继续干活。如果开关值为 1,那么内存耗尽时触发内核错误。然而在多 CPU 的机器上又是另外一番情景,没用过这种机器就不说了。如果开关值为 2,就算仅仅是一个 cgroup 里面发生了内存耗尽,整个系统都 panic 了。据说 1 和 2 这两个开关值是用来给集群做 failover 用的。

理论上,按照上述配置,OOM 发生的时候,系统不会发生 kernel panic,OOM Killer 会出来干活,而且是在启发式黑魔法的加持下机智的干活。

但是如果把系统搞挂了,貌似是,OOM 发生的时候,内核已经没有足够的资源去做扫描任务列表这种事情,然后整个系统就不可用了。

最后 看到有人说 用这几个命令。确定了确实是out of memory .

dmesg | egrep -i -B100 'killed process'

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

egrep -i -r 'killed process'/var/log或:

journalctl -xb | egrep -i 'killed process'

https://blog.jamespan.me/2015/06/06/oom-killer-down

https://my.oschina.net/sukai/blog/654712?p=1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值