erlang in danger 第六章问题解答

  1. 如何制定崩溃文件存放的位置?
    奔溃文件默认放在erlang进程的运行目录;通过设置ERL_CRASH_DUMP环境变量可以改变这个行为

  2. 节点内存耗尽时,常用的定位问题方法是什么?
    使用recon的目录下面erl_crashdump_analyzer.sh脚本分析崩溃文件,
    <pre>
    ./recon/script/erl_crashdump_analyzer.sh erl_crash.dump
    </pre>
    看Memory结果。

  3. 如果进程数量远低于正常值,如何定位问题?

    看slogan:是否有Kernel pid terminated (application_controller),表明应用依赖的一个应用达到supervisor的最大启动次数。

  4. 节点有个进程使用过多的内存而崩溃,如何找到那个进程?
    手册并没有给出直接答案,通过分析dump文件,我觉得如下可以
    <pre>
    grep -E "=proc|Memory:" erl_crash.dump
    </pre>

输出结果
<pre>
=proc:<0.0.0>
Memory: 18440
=proc:<0.3.0>
Memory: 142616
=proc:<0.961.0>
Memory: 67800
=proc_stack:<0.0.0>
=proc_heap:<0.0.0>
=proc_stack:<0.3.0>
=proc_heap:<0.3.0>
=proc_dictionary:<0.961.0>
=proc_stack:<0.961.0>
=proc_heap:<0.961.0>
</pre>

前6项可以视作结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容