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

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

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

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

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

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

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

  

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

     

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

     

如果节点有可用内存,则容器可以超出其内存请求。但是容器的使用量不能超过其内存限制。如果容器分配的内存超过其限制,则该容器将成为终止的候选者。 如果容器继续消耗超出其限制的内存,则容器将终止

为什么要使用内存限制:

  

容器在其使用的内存量上没有上限。容器可以使用其正在运行的节点上的所有可用内存,进而可以调用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的角度来看,您可能会感兴趣:

希望获得帮助。

其他资源:

本文链接:https://www.f2er.com/3088981.html

大家都在问