У меня проблема, я использую 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 В Erlang, когда почтовый ящик процесса увеличивается, он работает медленнее, почему?.
Но я все еще не понимаю. Если это из-за сбора мусора, то как сборка мусора может занимать так много времени или так часто?
handle_cast
, который занимает много времени? Одна из причин, по которой это может произойти, — это наличие выраженияreceive
, совпадающего с определенными сообщениями. - person legoscia   schedule 09.12.2016