node.js - 有没有办法在运行基于 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?
解决方案
您可以简单地检查 和 的/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 计算使用情况。
推荐阅读
- java - 在在线申请中使用 Java 执行器服务
- android - Android Studio Kotlin 多次传递意图和全局数组?
- c# - 为什么该方法在没有调用脚本标签的情况下运行?
- javascript - 从 ReactJS 中的状态对象中删除以前的事件
- node.js - 在 MERN 应用程序中,如果您的服务器上有 app.get('/') 和
在您的客户端上,哪个将首先触发或优先? - c - 通过 Shaker 排序对数组的主对角线进行排序
- ios - Delphi/ios:如何在我的 iOS 应用程序中包含动态库?
- sql - SQL Server:当另一列中的另一个数字> 1时,如何使用该列中的值更新列
- python - Python ZIP 函数从文件中删除太多项目
- c# - .NET 2.0 中的多部分/表单数据请求