繁体   English   中英

获取Erlang / Elixir中的总消息队列大小

[英]Getting the total message queue size in Erlang/Elixir

我正在为Elixir应用程序构建一些监视,并希望跟踪进程的消息队列的总长度-如果它们超过任何合理的值,则意味着系统无法跟上。

在现实生活中如何查询一个系统? :erlang.system_info/1似乎没有提供它,并且您只能从:erlang.process_info/1获取每个进程的信息。 我不喜欢使用后者并手动汇总消息队列长度的想法,因为可能存在成千上万个相关的GenServer进程,并对其进行检测感觉像是不必要的开销。

我似乎记得Wombat OAM具有此功能,这使我认为这是可能的,但我可能会误会。

在Erlang中:

所有信息:: :erlang.process_info(self())

只是消息队列的长度:: :erlang.process_info(self(), :message_queue_len) #=> {:message_queue_len, 2}

只是消息:: :erlang.process_info(self(), :messages) #=> {:messages, [:hello, :world]}


在长生不老药中:

所有信息: Process.info(self())

只是消息队列的长度: Process.info(self(), :message_queue_len)

只是消息: Process.info(self(), :messages)

两者都给出相同的输出,其中包括

对于Erlang,我建议您使用recon

在Elixir中,有一个包装: 点击

我也建议阅读Anger中的Stuff Goes Bad Erlang

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM