当前位置: 首页 > 知识库问答 >
问题:

有没有办法在运行Node.js上构建的应用程序的容器中记录Kubernetes Pod的内存使用情况

关冠宇
2023-03-14

我有一个 Kubernetes pod,它关闭并重新启动自身,因为它内存不足。有多个子进程异步运行并使用内存。我希望他们每个人都记录在 Kubernetes pod 上可用/使用的内存量。日志应与其他节点 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?

共有1个答案

杜俊逸
2023-03-14

您可以简单地检查 /sys/fs/c 组/cpu//sys/fs/c 组/内存/ 中的值:

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

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

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

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

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

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

 类似资料:
  • 我已经有一吨的console.log语句通过我的电子应用程序的主要过程,是否有一种方法将所有这些发送到电子日志或另一个日志,可以在应用程序打包后访问?我打算通过脚本添加,但希望有更好的方法。

  • 我们正在运行weblogic,似乎有内存泄漏-我们最终用完了堆空间。 我们在服务器上有5个应用程序(5个war部署)。 您能想到一种方法来收集每个应用程序的内存使用情况吗? (然后我们可以通过查看相应应用程序中的代码来集中搜索。) 我已经运行jmap来获取堆转储并在jvisualvm中加载结果,但不清楚大部分对象来自何处——例如字符串。 我在想,weblogic可能会在每个应用程序中使用单独的类加

  • 我想知道是否有一种通用方法可以在记录时屏蔽特定的类字段值?我正在使用龙目山记录器。 例如: 在记录toString()时,我希望能够以通用方式屏蔽该值(我知道我可以重写toString方法,但这需要针对每个类专门完成)

  • 所以我想要一个“Void Repository”,通过它可以访问不一定在实体上操作的存储过程。 但这当然不起作用,因为期望是一个实体。 有没有一种方法可以使用注释而无需创建虚拟实体,或者我是否坚持使用使用通过准备好的语句进行查询的已实现类? 因为老实说,这很难看:

  • 我希望在不下载netbeans的情况下开始使用javafx和fxml(正如官方文档所建议的:https://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm)、eclipse或scenebuilder。我希望使用一个简单的文本编辑器和终端,类似于人们创建html、css和javascript项目的方式。这是可能的,还是通过netbeans

  • 问题内容: 使用JSch,有没有办法在不执行ls并循环浏览文件以查找名称匹配的情况下,确定是否存在远程文件? 谢谢 问题答案: (这是如果您使用的是库的SFTP部分,这是我没有考虑的假设。) 我以为它会接受文件名。我目前无法检查。 如果不是这样,则无需手动进行迭代。您可以使用选择器变体: