diff --git a/src/emqx_misc.erl b/src/emqx_misc.erl index fdc7c5dc3..42e88d850 100644 --- a/src/emqx_misc.erl +++ b/src/emqx_misc.erl @@ -75,9 +75,12 @@ proc_stats() -> -spec(proc_stats(pid()) -> list()). proc_stats(Pid) -> - Stats = process_info(Pid, [message_queue_len, heap_size, reductions]), - {value, {_, V}, Stats1} = lists:keytake(message_queue_len, 1, Stats), - [{mailbox_len, V} | Stats1]. + case process_info(Pid, [message_queue_len, heap_size, + total_heap_size, reductions, memory]) of + undefined -> []; + [{message_queue_len, Len}|Stats] -> + [{mailbox_len, Len}|Stats] + end. -define(DISABLED, 0). @@ -145,12 +148,11 @@ drain_down(Cnt) when Cnt > 0 -> drain_down(0, Acc) -> lists:reverse(Acc); - drain_down(Cnt, Acc) -> receive {'DOWN', _MRef, process, Pid, _Reason} -> drain_down(Cnt - 1, [Pid|Acc]) after 0 -> - drain_down(0, Acc) + drain_down(0, Acc) end.