我有一個問題,我用根服務器做一些簡單的工作是這樣的:郵箱時得到更大的gen_server運行速度較慢
one handle_cast to do a long time work(takes 60 seconds)
one handle_cast to do a very fast work
,一切都很好,當流量低。但是,當服務器進程在第一次長時間工作時,客戶端向服務器發送數千條消息(例如郵箱中的1000000條消息)時,長時間工作將變得非常緩慢,完成可能需要600秒。
問題就像這個問題上stackoverflow In Erlang, when a process's mailbox growth bigger, it runs slower, why?。
但我還是不明白。如果由於垃圾收集,垃圾收集如何頻繁發生這麼長時間?
你能顯示需要很長時間的'handle_cast'子句的代碼嗎?可能導致這種情況的一個原因是,如果有一個「接收」表達式匹配特定的消息。 – legoscia
@legoscia哦,沒有。這個過程只需在循環中插入大約30,000個文檔到mongodb中。我的機器每秒可以寫入超過5000個文件,而且這也不是由mongodb磁盤IO造成的。 –
@legoscia這個問題就像是什麼遇到http://stackoverflow.com/questions/36216246/in-erlang-when-a-processs-mailbox-growth-bigger-it-runs-slower-why –