docker容器内的node.js应用程序中的频繁堆内存不足

问题描述 投票:0回答:1

我的node.js应用程序具有16个微服务和docker Image,并托管在带有kubernetes的Google云平台中。

但仅用于100个用户的api请求,由于堆内存不足-javascript,一些主要的docker映像已崩溃。

我检查了这些图像,并且node.js的堆内存限制为1.4 Gb。但是,由于API流量很少,它很快也将得到充分利用。

如何为node.js管理/分配堆内存docker / kubernetes?另外,有什么办法可以找出发生内存泄漏的地方吗?

javascript node.js docker kubernetes heap-memory
1个回答
0
投票

从kubernetes的角度,您应该考虑Managing Compute Resources for Containers的概念:

创建Pod时,Kubernetes调度程序为Pod选择一个要在其上运行的节点。每个节点对于每种资源类型都有最大容量:CPU和内存量 它可以为Pod提供。调度程序确保对于每种资源类型,已调度容器的资源请求总数小于节点的容量。

spec.containers []。resources.limits.memory转换为整数,并用作-docker run命令中的内存标志]的值。]

如果节点有可用内存,则容器可以超出其内存请求。但是不允许容器使用超出其内存限制的位置

。如果容器分配的内存超过其限制,则该容器将成为终止的候选者。 如果容器继续消耗超出其限制的内存,则容器终止

为什么使用内存限制:

容器在其使用的内存量上没有上限。容器可以使用其正在运行的节点上的所有可用内存,从而可以调用OOM Killer。

作为使用resource requests and limits的示例:

apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-2
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-2-ctr
    image: polinux/stress
    resources:
      requests:
        memory: "50Mi"
      limits:
        memory: "100Mi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "250M", "--vm-hang", "1"]

要了解有关豆荚/容器状态的更多信息,可以使用:

kubectl describe pod your_pod 
If metric server was installed:
kubectl top pod your_pod ## to see memory usage.

从node.js的角度来看,您可能会感兴趣:

其他资源:

© www.soinside.com 2019 - 2024. All rights reserved.