gpt4 book ai didi

timer - Erlang 定时器可以扩展吗?

转载 作者:行者123 更新时间:2023-12-04 14:15:44 25 4
gpt4 key购买 nike

在我用 Erlang 开发的 websocket 服务器中,我想为每个连接使用一个计时器( start_timer/3 ),如果超时过去而没有收到来自客户端的“ping”,则终止连接。

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

最佳答案

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

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

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

关于timer - Erlang 定时器可以扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com