node.js - 我是否应该将任何内存选项传递给在 Kubernetes pod 上运行且有限制的 nodejs 应用程序?
问题描述
我在 Kubernetes 上运行的 nodejs 应用程序有限制:
apiVersion: apps/v1
kind: Deployment
..
spec:
..
template:
..
spec:
containers:
- name: mynodejsapp
..
resources:
requests:
memory: "1000Mi"
cpu: "500m"
limits:
memory: "2000Mi"
cpu: "1000m"
..
我的 nodejs 应用程序的 Dockerfile 是基于node:10-slim
:
FROM node:10-slim
..
COPY . .
RUN npm run build
EXPOSE 3000
ENTRYPOINT ["dumb-init", "--"]
CMD [ "node", "./build/index.js" ]
我发现一些--max_old_space_size
应该设置的旧帖子。那是对的吗?还是 nodejs 进程会自动找到现有的内存限制?
解决方案
使用 Nodejs 10 这很糟糕,因为在 64 位操作系统上它可能会超过您的限制值。Nodejs 12 应该没问题,但是如果你想使用 CPU 活动来扩展 pod,设置 max old memory 是个好主意。GC 会尽量保持在这个值之下,(所以在你的 k8s 请求内存之下)并且 CPU 活动会增长。我在这里写了一篇关于这个主题的文章。
推荐阅读
- sql - 查询以查找取决于表中不同列的列中的值是最小日期
- angular - 角度反应形式数据转换
- java - 如何在JavaFX中鼠标悬停时使屏幕外选项卡/窗格滑入主窗口
- qt - Qt无法加入指定networkInterface的多播组
- php - Laravel 递归 whereHas on BelongsToMany 关系
- python - 嵌套字典和列表的单词计数器
- javascript - 使用 JWT 进行 NodeJS 用户身份验证
- github - 仅当上一步已运行时才运行 GitHub Actions 步骤
- python - 如果没有打印 python 字典键字符串值的条件匹配
- go - 在 Go 中遍历孩子的谱系