美文网首页Erlang
排查erlang应用vm占用内存过大的思路

排查erlang应用vm占用内存过大的思路

作者: randyjia | 来源:发表于2016-12-16 14:18 被阅读128次

如果现在使用top命令,你发现erlang的beam.smp进程占用了很大的内存,这个时候该如何下手定为问题?
有几个思路:

  1. 查看内存占用top N进程,比如查看内存占用top 10的进程;
  2. 如果没有头绪,需要查看进程总数量和最多数量的几个进程;

步骤1对应的方法

  1. 使用etop
    <pre>
    spawn(fun() ->etop:start([{output, text}, {lines, 20}, {sort, memory}]) end).
    </pre>.
  2. 使用recon库
    <pre>
    recon:proc_count('memory',10)
    </pre>
  3. 自定义
    <pre>
    List1 = erlang:processes(),
    List2 = lists:map(fun(Pid) -> {, V0} = erlang:process_info(Pid, current_function), {, V1} = erlang:process_info(Pid, memory), {V0, V1} end,List1),
    lists:sort(fun({, H1}, {, H2}) -> H1 > H2 end,List2)
    lists:sort(fun({, H1}, {, H2}) -> H1 > H2 end, lists:map(fun(Pid) -> {, V0} = erlang:process_info(Pid, current_function), {, V1} = erlang:process_info(Pid, memory), {V0, V1} end, erlang:processes())).
    </pre>

相关文章

网友评论

    本文标题:排查erlang应用vm占用内存过大的思路

    本文链接:https://www.haomeiwen.com/subject/gqjnmttx.html