我们正在运行一项工作,我们知道它有时会过多地挤压内存。然而,这会导致杀死一个或两个我们希望成为在这种情况下被杀死的最后一个进程的进程。我们如何告诉 linux,请不要杀死 pid XXXX 和 pid YYY 并首先杀死其他作业,包括必要时占用所有 CPU 的作业,因为该作业(我们正在运行的作业)的生存优先级低于这两个作业其他过程。
基本上,我们正在使用我们的 cassandra 数据库运行 map/reduce 作业,并且 linux 决定终止 cassandra 而不是终止 map/reduce 任务(这将是理想的,因为它们具有内置的恢复功能并且也可以将任务列入黑名单)。
您可以设置 OOM Killer 将终止的进程的优先级。
给一个进程一个负的 oom_adj 值,使其不太可能被杀死:
给它一个正值,使它更有可能被杀死:
将上述命令中的 2592 替换为您要保护和/或牺牲的进程的实际 PID。
你可以:
希望这可以帮助
如果您希望触发 OOM 的进程终止,只需设置适当的
sysctl
: