首页 > 解决方案 > 有没有办法在运行基于 Node.js 构建的应用程序的容器中记录 Kubernetes Pod 内存使用情况

问题描述

我有一个 Kubernetes pod,由于内存不足,它会自行关闭并重新启动。有多个子进程异步运行并使用内存。我希望他们每个人都记录 Kubernetes pod 上可用/使用的内存量。日志应该与其他 Node js 日志一起。

我知道process.memoryUsage(),,,os.totalmem()os.freemem()

分别提供以下输出

{"ts":"2021-04-21T10:52:50.299Z","msg":"Node Memory Stats:{\"rss\":125792256,\"heapTotal\":94720000,\"heapUsed\":48927816,\"external\":1668086}","logger":"___","level":"info"}
{"ts":"2021-04-21T10:52:50.300Z","msg":"OS/POD Total Memory:17179869184, OS/POD Free memory:87195648","logger":"___","level":"info"}

我想知道是否有任何方法可以对 pod 进行系统调用、获取其资源并登录 Node?

标签: node.jskubernetesloggingmemoryout-of-memory

解决方案


您可以简单地检查 和 的/sys/fs/cgroup/cpu//sys/fs/cgroup/memory/

对于当前的CPU使用情况,请执行

$ cat /sys/fs/cgroup/cpu/cpuacct.usage

对于当前的内存使用情况,请执行

$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes

提示:确保您已将资源部分(请求和限制)添加到部署中,以便它可以根据 cgroup 计算使用情况。

https://stackoverflow.com/a/62717009/1560953


推荐阅读