erlang in danger 第六章问题解答
2016-03-30 本文已影响121人
randyjia
-
如何制定崩溃文件存放的位置?
奔溃文件默认放在erlang进程的运行目录;通过设置ERL_CRASH_DUMP环境变量可以改变这个行为 -
节点内存耗尽时,常用的定位问题方法是什么?
使用recon的目录下面erl_crashdump_analyzer.sh脚本分析崩溃文件,
<pre>
./recon/script/erl_crashdump_analyzer.sh erl_crash.dump
</pre>
看Memory结果。 -
如果进程数量远低于正常值,如何定位问题?
看slogan:是否有Kernel pid terminated (application_controller),表明应用依赖的一个应用达到supervisor的最大启动次数。
-
节点有个进程使用过多的内存而崩溃,如何找到那个进程?
手册并没有给出直接答案,通过分析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项可以视作结果。