我目前正在调查一个大型Erlang应用程序中的性能问题。应用程序表现出比预期更大的CPU负载。为了首先掌握系统的哪些部分负责负载,我想执行this answer中描述的调用堆栈采样。
有没有更好的方法来实现这一点,而不是重复调用erlang:process_info(Pid, backtrace)并从输出中提取函数?
请注意,系统太大了,无法使用fprof,而且etop也没有为我指明正确的方向。现在也不可能只对系统的某些部分使用fprof,因为我首先需要指出性能问题的大致位置。
发布于 2017-02-20 22:26:00
获取堆栈实际大小的一种简单方法是process_info(Pid, stack_size)。虽然这只返回堆栈的大小,但它是一种非常简单有效的方式来查看哪些进程具有较大的堆栈。
https://stackoverflow.com/questions/42246193
复制相似问题