NodeJS 是否尊重 Docker 虚拟化和资源限制?

2023-12-29

众所周知,某些应用程序不了解 Linux 内核隔离和虚拟化功能(例如 cgroup)。这包括系统实用程序,例如top, free and ps,还有 Java 等平台。

我最近读过一篇文章 https://very-serio.us/2017/12/05/running-jvms-in-kubernetes/这表明在 Kubernetes 中运行 JVM 时,您应该对 Java 堆大小进行手动限制以避免错误。

我无法在任何地方找到 NodeJS 是否也是如此。我是否需要实现类似上面的东西来设置--max_old_space_size=XXX在 Kubernetes 中的 NodeJS 应用程序上?


NodeJS 进程将尝试分配内存,而不管容器限制如何,就像 Java 一样。

对进程设置限制将有助于阻止操作系统终止进程,特别是在受限环境中,即使 Node 可能在限制范围内运行,Node 也可能会尝试分配超过内存限制的内存。

如果您运行的应用程序接近使用内存限制,则添加内存限制设置只会更改故障情况。 NodeJS 和 JVM 将有机会因内存不足错误 (OOM) 退出,而不是被操作系统杀死。当进程接近内存限制时,该进程可能会缓慢地爬行,并且垃圾收集器会尽力使进程保持在限制以下。

请注意,old 空间只是 NodeJS 中多个内存空间之一。只能限制新空间(半空间)和旧空间。

--max_semi_space_size (max size of a semi-space (in MBytes), the new space consists of two semi-spaces)
    type: int  default: 0
--max_old_space_size (max size of the old space (in Mbytes))
    type: int  default: 0

其他堆空间通常很小并且足够静态,无需担心。

运行本机代码的模块可以在堆外部分配内存,并且不受选项限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 是否尊重 Docker 虚拟化和资源限制? 的相关文章

随机推荐

  • 浏览器如何判断是下载还是显示

    我有一个 Web 资源 它返回 json 内容Content Type application json 通常内容会直接显示在浏览器中 但有时不会 而是显示下载提示 我知道有一个标题Content Disposition inline at
  • jQuery:如何在单击缩略图时显示图像弹出窗口?

    在我的 aspx 页面中 我有一个缩略图 img 当用户单击该图像时 我希望显示一个弹出窗口 用较大 完整 版本的图像遮挡 UI 的其余部分 有没有任何插件可以做到这一点 有很多 jQuery 插件可用于此 Thickbox http co
  • Google Play 商店是否支持华为 HMS?

    我有一个带有常见谷歌广告和应用内支付功能的应用程序 它已被 Play 商店接受 现在我想让它同时支持GMS和HMS 根据适当服务的可用性 应用程序可以决定使用哪个平台 该应用程序内置了华为功能 在我自己的设备上测试时运行良好 然而 一旦华为
  • @Inject 通过 URL 将参数传递给 CDI @Named bean

    如果我无法将 ManagedProperty 注释与 Named 一起使用 因为 ManagedProperty 在 CDI 中不起作用 那么如何将 URL 中的参数传递给 Facelets 客户端 在我的代码中 我想通过 后退 和 前进
  • 使用 React.JS 导入 SVG 的最佳方法是什么

    我和我的团队正在构建一个 React 应用程序 我们希望导入 SVG 而不是作为字符串 这样我们就能够将其用作组件 由于我们使用 CRA 安装了该项目 因此 SVGR 已安装并处于 webpack 配置中 我们想知道是否有其他方法可以导入
  • utf-8 邮件 php 希腊字符

    我在我的网站中创建一个表单 我希望客户能够编写和发送希腊字符 但在邮件中我收到类似这样的内容 而不是希腊字符 我尝试使用以下代码将编码更改为 UTF 8 mail recipient subject UTF 8 B base64 encod
  • 有没有办法排除 docusaurus 中 docs 目录中的路径?

    我想从其中排除子文件夹docs 生成文档页面的目录 customDocsPath https docusaurus io docs en site config customdocspath string是一个相关选项 但它是一个字符串 是
  • Three.js - 相机的良好 z 距离,可实现盒子的全视图

    我使用 Three js 显示尺寸为 700x700 的场景 在此场景中 我生成了一个随机位置在 250 到 250 之间 对于 x y z 的粒子系统 因此盒子的大小为 500x500 为了计算相机的正确距离 为了适应盒子的完整视图 我尝
  • 如何在 EditItemTemplate 字段中绑定 GridView 中的 DropDownList?

    这是我在运行时绑定的 gridview 中的代码
  • 我应该如何在 Visual Studio 中使用调试/发布模式?

    我通常在工作机器上本地测试代码 然后将其移至开发环境 最后移至生产环境 对于这种情况 使用调试 发布模式的最佳方法是什么 我只需要关心我的机器中的调试模式吗 我应该将调试模式还是发布模式发布到开发中 我知道我可能应该使用发布模式发布到生产环
  • Django Rest Framework - 当用户不是对象所有者时拒绝用户推送

    目前 我设置了权限 如果用户不是对象所有者 则可以阻止他们进行 GET DELETE 和 PUT 操作Stock 但由于某种原因 当用户执行 PUSH 时 权限不起作用 即任何用户都可以 PUSHNote to a Stock即使他们不是S
  • 在 Docker 中运行 Angular2 应用程序

    我正在尝试在 docker 中运行我的 ng2 应用程序 我有 Docker 文件 FROM ubuntu latest RUN apt get update Install curl git RUN apt get qq y instal
  • 使用 Firebase 编写异步代码

    我正在尝试创建一个算法 该算法创建 12 个结构对象 问题 并将它们放入一个数组 问题 中 但是 它似乎不起作用 因为对象是在 Firebase 中的数据能够修改它们之前创建的 我试图使它们异步 但我在网上发现没有任何效果 提前致谢 let
  • 使用 SQL 查询的树视图

    我有一个区域表 我想要一个树视图 表简单地按树排序 是否可以使用sql查询帮助表示赞赏 我尝试使用自连接来做到这一点 但我没有得到所需的结果 树视图是这样的 Indiv Div1 Zon1 div2 zon2 div3 zon3 EDIT
  • 如何在 git 中执行多行提交消息? [复制]

    这个问题在这里已经有答案了 我已经做了一段时间的单行提交消息 但它没有提供有关提交的完整信息 git commit m message 我曾经使用过 git Gui 工具 它可以选择执行多行提交消息 一份在标题中 一份在详细信 息中 我们如
  • MESI缓存协议

    我正在读关于MESI 监听缓存一致性协议 http en wikipedia org wiki MESI protocol 我猜这是现代多核 x86 处理器中使用的协议 如果我错了 请纠正我 现在那篇文章在一处提到了这一点 保存处于修改状态
  • 删除 SQL Server 2010 中的“重复”行

    我在批量插入脚本中犯了一个错误 所以现在我有具有不同 colX 的 重复 行 我需要删除这些重复的行 但我不知道如何删除 更准确地说 我有这个 col1 col2 col3 colX 0 1 2 a 0 1 2 b 0 1 2 c 0 1
  • 隐式宏。默认隐式值。如何?

    我什至不知道如何问这个问题 我有一个宏可以创建一个实例IsEnum T 对于一个类型T 我正在对其进行测试 并希望确保对于未密封的类型或通常不满足枚举要求的类型找不到隐式类型 所以我创建了这个方法来测试 def enumOf T impli
  • 从系列中删除异常

    我在 Outlook 中有一个系列 但有一些例外 我想做的是删除本系列中的所有例外 有谁知道是否有办法做到这一点 由于例外列表是只读的 我尝试清除重复模式并重新应用例外列表之外的所有值 如下所示 Dim tRType As OlRecurr
  • NodeJS 是否尊重 Docker 虚拟化和资源限制?

    众所周知 某些应用程序不了解 Linux 内核隔离和虚拟化功能 例如 cgroup 这包括系统实用程序 例如top free and ps 还有 Java 等平台 我最近读过一篇文章 https very serio us 2017 12