erlang in danger 第六章问题解答

2016-03-30  本文已影响121人  randyjia
  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项可以视作结果。

上一篇 下一篇

猜你喜欢

热点阅读