Erlang计时器是否规模?

Enr*_*oma 6 erlang timer

在我用Erlang开发的websocket服务器中,我想start_timer/3为每个连接使用一个timer(),如果超时没有从客户端接收到"ping",则终止连接.

Erlang定时器是否可以很好地扩展,假设我将拥有大量的客户端连接?

I G*_*ERS 9

什么是大量的连接?Erlangs VM在内部使用定时器轮来处理定时器,因此它可以很好地扩展到几千个连接.那你可能会遇到麻烦.

通常的诀窍是在计时器上将pid组合在一起.这也是内核倾向于做的事情.例如,如果您有一个必须在200毫秒内唤醒的计时器,您可以提前安排自己,而不是下一个,而是再次使用下一个200毫秒计时器.这意味着您将等待至少200毫秒,也许400毫秒,典型的300毫秒.通过近似这样的计时器,您可以运行更多计时器,因为您可以让一个计时器一次性唤醒大量进程.但是根据定时器频率和定时器的数量,标准send_after/3可能就足够了.

在任何情况下,我会首先假设它可以扩展,然后处理问题,如果它不能通过像上面设想的近似时间.