2
A
回答
2
您可以使用:
erlang:process_info(Pid, message_queue_len)
,你会得到这样的结果:
{message_queue_len, Number}
,但也许这是不是你在找什么。
如果您正在使用OTP,您可以使用观察者@Pascal说,或者你可以保留一个计数器的状态,并在每次处理呼叫,信息或施法时间更新。
0
如果你已经建立了一个OTP应用程序,那么我想你可以使用控制器的应用。
只需运行观察员:开始()在虚拟机中运行的OTP应用去看看。
1
如果您的进程完全符合OTP标准(例如,gen_server,gen_event,gen_fsm),您可以使用sys:statistics/2,3
来跟踪messages_in/messages_out速率。从我从文档中收集的内容中,您可以用Flag = true来调用它,等待一段时间,然后再用Flag = get再次调用它(不确定是否必须再次使用Flag = false来调用它)。
这就是说,没有OTP遵从性就比较容易。设置一个定时器(我建议在定时器模块上使用erlang:start_timer
)在N毫秒后向您的进程发送消息,并计算您收到的消息数量。当您收到来自定时器的消息时,将计数除以N,得到每毫秒的速率(乘以1000,以每秒速率计)。冲洗并重复。
如果您正在从回调模块或基于接收块的进程处理各种消息(在这种情况下应该将其转换为回调形式),这会变得有点乏味无论如何),所以我不完全推荐它。因此,如果您正在使用OTP进程,请为了您的理智而使用sys模块。
相关问题
- 1. 在Erlang进程中接收多条消息
- 2. Erlang进程发送消息
- 3. 从另一个进程接收消息
- 4. 在erlang进程之间传递消息?
- 5. Erlang 16B01不再接收来自arduino的udp消息
- 6. 如何优化Erlang中数千条消息的接收循环?
- 7. 消息收发应用程序接收消息
- 8. Erlang - 调用io时接收超时消息:格式
- 9. PHP:接收消息
- 10. 接收UDP消息
- 11. 消息发送,接收方没有收到消息。套接字编程
- 12. Erlang消息循环
- 13. 消息传递变量和“直接”erlang
- 14. 如何发送消息到Erlang的进程组
- 15. Android,OSC,接收器不接收消息。
- 16. JMS-从远程Glassfish接收消息
- 17. tun设备:消息未被服务器进程接收
- 18. 接收到第一个消息后,分离节点子进程
- 19. Java到Erlang的消息
- 20. Erlang接收***警告***
- 21. Erlang消息队列在进程中是否持久?
- 22. erlang进程和消息传递体系结构
- 23. Erlang:远程调用vs发送消息
- 24. FCM接收消息问题
- 25. ESelectionService无法接收消息
- 26. ServiceHost消息接收事件?
- 27. AngularJs + Strophe.js接收消息
- 28. 在后台接收消息
- 29. GCM消息接收订单
- 30. 如何接收消息(WM_COPYDATA)?
如果吞吐量很高,则长消息队列是okey。我试图找出消息在队列中停留的时间。 – Flinkman 2013-03-28 07:02:28
然后我相信这可能是有用的http://stackoverflow.com/questions/4281251/getting-the-time-of-the-received-message – user601836 2013-03-28 08:55:21