监控自身进程的内存使用情况

Posted

技术标签:

【中文标题】监控自身进程的内存使用情况【英文标题】:Monitoring memory usage of self process 【发布时间】:2013-06-26 05:50:43 【问题描述】:

我有一个通过包装器运行并作为网格 (Linux) 上的作业提交的应用程序。 y 任务是监视进程的 RAM 和虚拟内存使用情况,如果进程由于内存问题而失败,请再次将其重新提交到具有更高内存要求的网格(使用某些开关)。 我认为这可以通过从监视主应用程序的应用程序中调用一个单独的线程来实现,并在失败的情况下重新启动主应用程序。 我正在寻求更好地解决此问题的建议。

谢谢 汝驰

【问题讨论】:

【参考方案1】:

线程将无法工作,因为 C 和 C++ mandate that returning from the main function kills all running threads(感谢 Do child threads exit when the parent thread terminates)。

您需要将其设为另一个进程,也许是一个脚本,该脚本启动该进程,然后管理您的应用程序。

【讨论】:

如果由于某些内存使用问题而没有用户干预而导致应用程序失败,我不能自行重新启动应用程序。我不能使用任何不是从应用程序本身调用的外部脚本/程序 @Ruchi 我认为可能是这样。你的包装器不能启动第二个进程吗?如果不是,您可能需要按照 rakib 的建议进行操作。您可以重新启动一个新实例并终止当前实例。【参考方案2】:

通常的方法是检查内存分配何时失败,即 malloc()。如果 malloc() 失败,则表明您的系统内存几乎已满,在这种特殊情况下,您可以做自己喜欢做的​​事情。

【讨论】:

以上是关于监控自身进程的内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章

zabbix自动发现与监控内存和CPU使用率最高的进程

监控 Java 应用程序自己的内存使用情况

FortiGate防火墙内存使用率高问题

关于在zabbix监测脚本中使用ps命令监控进程CPU使用率和内存使用率,获得数据为0的情况描述

JVM与Linux内存关系分析

Linux与jvm内存关系分析