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