守护进程的内存分析

Posted

技术标签:

【中文标题】守护进程的内存分析【英文标题】:Memory profiling for a daemon process 【发布时间】:2015-08-23 00:53:40 【问题描述】:

我有一个守护进程,我想在其上执行内存配置文件。所以我选择了 valgrind 并使用 massif 工具运行它,但是由于进程永远不会终止,所以 massif 永远不会返回输出文件。即使我尝试向进程发送 TERM 信号,我也没有收到任何来自地块的输出。

所以现在我尝试在我的 Eclipse 中安装一个 valgrind 插件,并开始尝试在我的守护进程的已创建二进制文件上运行配置文件,但是当我启动分析器时,它会显示 2 种错误:

    未能说无法加载库。我没有找到在配置文件配置中设置库路径的任何方法。 读取内存地址的权限错误。

所以我什至无法在 Eclipse 中运行分析器。

我尝试了 gdb,我尝试获取内存信息,但这就是“/proc//maps”所给出的。所以没用。

最后是我的用例:

    我有一个永不退出的守护进程,我想对其执行内存分析。 我想获取没有发生内存分配、最大内存分配、哪条指令尝试分配最多分配等的快照。 如果我能获得一个用于内存分析的可视化界面,这样我什至可以与我的经理分享它,那就更好了。

所以请建议我是否有任何此类分析器可以提供帮助以及任何指向何处获取文档等的指针。

提前致谢! 维奈。

【问题讨论】:

【参考方案1】:

在 valgrind 下运行程序时,各种命令 (取决于工具)可以从外壳执行,使用 vgdb 处于独立模式。

使用 --tool=massif 运行时,您可以按需快照,而 你的程序正在运行。

更多信息请参见http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands。

【讨论】:

以上是关于守护进程的内存分析的主要内容,如果未能解决你的问题,请参考以下文章

拿什么守护你-PHP程序级守护进程的实现与优化

35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型

php守护进程创建和简要分析

如何使用 gprof 分析守护进程而不优雅地终止它?

crond守护进程实现定时监控某进程占有内存的大小

剖析将自身分叉为守护进程的 python 程序