AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 875011
Accepted
Philipp Claßen
Philipp Claßen
Asked: 2017-09-23 04:06:08 +0800 CST2017-09-23 04:06:08 +0800 CST 2017-09-23 04:06:08 +0800 CST

是否建议在 systemd 中设置 OOMScoreAdjust=1000 以获得可替换服务?

  • 772

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

引用systemd 文档:

OOMScoreAdjust=

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

在我的设置中,我在 AWS 上部署了一个 NodeJs 服务器。除了节点服务器之外,EC2 实例上没有运行其他任何东西(除了监控和基本的操作系统进程)。有 ELB 健康检查,最终应该会替换损坏的 EC2 实例。

不过,我想知道如果存在内存问题,增加内核是否更喜欢杀死 Node 服务器进程是否被认为是一种好习惯OOMScoreAdjust,因为它可以自动重新启动。在 systemd 中,它可能如下所示:

OOMScoreAdjust=1000
Restart=always

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

  • 如果内存耗尽的进程是节点服务器,它很可能无论如何都会被杀死。
  • 如果罪魁祸首是另一个进程,重新启动节点服务器将无济于事,ELB 健康检查最终应该负责替换实例。

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

amazon-web-services
  • 1 1 个回答
  • 9415 Views

1 个回答

  • Voted
  1. Best Answer
    Malvineous
    2018-05-19T00:19:28+08:002018-05-19T00:19:28+08:00

    对于具有单个进程的服务器,它可能不会产生太大的影响,但如果您有一个经常泄漏内存的进程,这真的会大放异彩。

    例如,在桌面上,Firefox 倾向于使用越来越多的内存,直到调用 OOM-killer,并且总是会确定 Xorg 正在使用最多的内存并将其杀死,从而导致整个桌面崩溃,而实际上它只是浏览器需要重新启动。

    因此,在这种情况下,将泄漏程序的 OOM 分数设置为 1000 并立即重新启动不会有问题,因为它将首先被杀死,并且当它重新加载时,它不会像以前那样使用尽可能多的内存,从而释放整体记忆。

    如果该进程的内存使用相当稳定,那么它不太重要(但肯定不会受到伤害),但如果它是泄漏的,那么它可能会比让 AWS ELB 注意到问题并构建一个新的 VM 更快地恢复。

    • 7

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve