是否build议在systemd中设置OOMScoreAdjust = 1000作为可replace的服务?

systemd具有OOMScoreAdjust选项,该选项允许调整已启动进程的oom-killer分数。

引用systemd文档 :

OOMScoreAdjust=

为已执行的进程设置内存不足杀手的调整级别。 取一个-1000之间的整数(以禁止这个进程的OOM查杀)和1000(很有可能在内存压力下杀死这个进程)。 有关详细信息,请参阅proc.txt 。

在我的设置中,我在AWS上部署了一个NodeJs服务器。 在节点服务器旁边,EC2实例上没有其他的东西运行(期望监视和基本的操作系统进程)。 有ELB健康检查到位,最终应该取代破碎的EC2实例。

不过,如果存在内存问题,我想知道是否增加OOMScoreAdjust以使内核更喜欢杀死节点服务器进程是一种很好的做法,因为它可以自动重新启动。 在systemd中,它可能看起来像这样:

 OOMScoreAdjust=1000 Restart=always 

我不得不承认,我的理解是有限的。 我目前的理解是,它很可能不会有真正的区别,最好保留默认值:

  • 如果内存耗尽过程是节点服务器,它将最有可能被杀害。
  • 如果罪魁祸首是另一个进程,重新启动节点服务器将无济于事,ELB运行状况检查应该最终负责replace实例。

不过,我很好奇,如果有更好的理解的人已经想通了。 启用它只会是systemd脚本中的一行。 如果有疑问,我宁愿让内核杀死Node进程,而不是任何随机的系统服务。