[英]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)
两者都给出相同的输出,其中包括
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.