OOM评分调整

在Ubuntu 12.04 / Java 1.7上

我一直在阅读/search关于OOM杀手,一般了解“proc”手册页尤其是oom_adj部分。 这一切都开始,因为我的重要“MQ听众”被杀害。

我们有一个主监听器进程,它监听MQ消息,并使用相同的jar文件,不同的命令行参数产生一个新的作业。 它使用Runtime.getRuntime().exe来启动作业。

整个事情是作为一个非常低权限的用户运行的 – 一个没有任何其他权限的用户。

我担心的是监听器进程的OOM得分会不断增加,因为它会持续产生进程并最终被杀死,假设java exec调用在内部使用fork。

  1. 如何更改由低权限用户启动的进程的oom_adj值? 否则,这意味着所有可以部署jar文件的人都需要具有sudo权限。

  2. 有没有任何电话/档案可以用来让所有工作的OOM分数找出哪一个可能被杀死? 寻找与syslog文件中logging的内容相似的报告,但实际上并没有完成任务

使用oom_score_ajk来解决这个问题是一个不好的方法。 即使你调整了OOM得分,也会有一些事情被杀死,最终它会成为你不想死的东西(MQ侦听器或像syslog / cron这样的核心系统服务)。

解决您的问题的可靠方法是获得更多内存(RAM +交换)或减less应用程序的内存使用量。