有没有很好的方法来分析大幅减少的过程?

时间:2013-08-17 10:35:24

标签: erlang

我发现在我们的产品环境中流程减少很大,而且消息没有减少。

仅供参考,5分钟后减少为10831243888178,然后为10838818431635。根据减少,message_queue_len为1012,然后是1014。

我认为从messages返回的process_info(Pid)应该在5分钟内消耗掉,但事实并非如此。我可以说这个过程被某些消息阻止了吗?

我从网上读到,一次减少可以看作一个函数调用,但我不完全理解它。如果有人能告诉我更多有关“减少”的信息,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

缩减是一种衡量流程完成工作的方法。

每个预定的进程在抢占之前都会花费一些减少,换句话说,在它必须让其他进程执行之前。调用一个函数将花费1次减少,这似乎是正确的,但它不是唯一花费它们的东西,在这个函数调用中也会消失很多减少。

您给出的数字似乎是流程累计减少的数量。一个大数字本身并不意味着什么。然而,大幅增加意味着流程正在做一些艰苦的工作。如果这个主力没有消耗消息队列,很有可能它被困在一个很长甚至无休止的计算中。

您可以尝试使用process_info(Pid, current_function)process_info(Pid, current_stacktrace)进一步检查。