我发现在我们的产品环境中流程减少很大,而且消息没有减少。
仅供参考,5分钟后减少为10831243888178,然后为10838818431635。根据减少,message_queue_len为1012,然后是1014。
我认为从messages
返回的process_info(Pid)
应该在5分钟内消耗掉,但事实并非如此。我可以说这个过程被某些消息阻止了吗?
我从网上读到,一次减少可以看作一个函数调用,但我不完全理解它。如果有人能告诉我更多有关“减少”的信息,我将不胜感激。
答案 0 :(得分:3)
缩减是一种衡量流程完成工作的方法。
每个预定的进程在抢占之前都会花费一些减少,换句话说,在它必须让其他进程执行之前。调用一个函数将花费1次减少,这似乎是正确的,但它不是唯一花费它们的东西,在这个函数调用中也会消失很多减少。
您给出的数字似乎是流程累计减少的数量。一个大数字本身并不意味着什么。然而,大幅增加意味着流程正在做一些艰苦的工作。如果这个主力没有消耗消息队列,很有可能它被困在一个很长甚至无休止的计算中。
您可以尝试使用process_info(Pid, current_function)
或process_info(Pid, current_stacktrace)
进一步检查。