我们有一个debian
linux webserver.它只是运行apache2.我们的
mysql服务器在另一台主机上.但是,我们有时会在Web服务器上运行cron任务来执行常规任务.
然而,最近其中一个cron任务有一个bug并开始吞噬内存. Linux OOM杀手杀死了apache.这当然会打倒我们的网站.记忆饥渴的cron一直在奔跑.但是在这种情况下,我希望OOM杀手杀死那个脚本,而不是apache.
有没有办法配置内核,以便我可以说不要杀死名为’apache2’的进程(或者至少让apache2成为它杀死的最后一件事)? apache和常规crons都以同一个用户(www-user)运行.
解决方法
通过实际调试为什么这个cron作业耗尽了这么多内存,听起来并不像是在解决问题的根本原因.
您可以尝试设置此选项
echo 1>的/ proc / sys目录/ VM / oom_kill_allocating_task
这将告诉OOM杀手杀死触发OOM条件的进程,但这不能保证是你的cron工作.您还可以在脚本中使用“ulimit -m”来设置要使用的最大驻留内存量.我认为你最好的选择是评估为什么cronjob耗尽了如此多的内存,以及它是否最适合其他主机或者被重写以消耗更少的内存.