首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为守护进程永久设置OOM杀手调整?

问如何为守护进程永久设置OOM杀手调整?
EN

Unix & Linux用户
提问于 2012-12-19 11:09:47
回答 2查看 24.2K关注 0票数 18

运行一些具有单个或几个重要的系统服务守护进程的Linux服务器,我想为那些守护进程调整OOM杀手,以防发生奇怪的事情。例如,今天一些运行MySQL的Ubuntu服务器被杀死了一个MySQL守护进程,因为大量的apt-checker进程是消耗了所有的内存,内核认为杀死MySQL是个好主意。

我知道我可以使用/proc/$(pidof mysqld)/oom_score_adj文件来调整分数,给内核一些提示,我不希望MySQL被杀死,但这不能在重新启动服务之后存活下来。我是否应该从包中编辑init/upstart脚本以包括这些调整?我不认为这是一个非常优雅的解决方案,因为我会调整属于包的文件。是否有可能在一般情况下与新贵/init脚本挂钩并对其进行有条件的调整?或者您会建议运行像while true{ adjust_oom(); sleep 60;}这样的无限期脚本吗?

EN

回答 2

Unix & Linux用户

发布于 2013-01-21 15:11:05

这在Ubuntu中使用Upstart和oom score配置选项是可能的。

oom score Linux有一个“内存不足”的杀手工具。...通常将OOM杀手平等地对待所有进程,这一节建议内核以不同的方式对待这项工作。提供给这一节的“调整”值可能是一个整数值,从-999 (极不可能被OOM杀手杀死)到1000 (很可能被OOM杀手杀死)。...示例:#此应用程序是一个“资源占优势”oom得分为1000预期守护进程重新出现exec /usr/bin/leaky

票数 9
EN

Unix & Linux用户

发布于 2012-12-19 23:08:17

您可以将它黑进MySQL本身(例如OpenSSH的sshd可以实现这一点),但是这有点太硬了,而且非常脏(更新问题等等)。

您可以在包装器或init脚本中这样做--分数应该是继承的(在包装器中,您可能无论如何都想做exec mysqld "$@" )。

使用cgroups -它将给您更多的灵活性,它可以成为永久的意义上,适当的设置可以自动应用于服务重新启动。有关更多信息,请参见使用cgroup控制应用程序的优先级。为了实现您想要的自动化,您可能想看看libcgroup群群,它包含一个守护进程,它可以根据一组规则动态处理正在运行的进程的更改cgroup,或者只使用cgexec包装器(来自同一个包)。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/58872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档