每个 Netty Worker 每秒唤醒 2 次。为什么?

发布于 2024-11-05 17:51:10 字数 316 浏览 1 评论 0原文

NioWorker.run 调用 SelectorUtil.select 进行选择,超时时间为 500 毫秒。

NioClientSocketPipelineSink.Boss.run 调用 select,超时时间为 500 毫秒。

NioServerSocketPipelinkSink.Boss.run 还以 1000 毫秒超时调用 select。

因此,即使网络上没有发生任何事情,每个工作人员每秒至少唤醒一次。这是针对某些问题的解决方法吗?我认为,如果没有发生任何事情,好的事件驱动程序一定不会醒来(即无限超时调用“select”)。消息来源中没有任何解释。

NioWorker.run calls SelectorUtil.select that does select with 500 ms timeout.

NioClientSocketPipelineSink.Boss.run calls select with 500 ms timeout.

NioServerSocketPipelinkSink.Boss.run also call select with 1000 ms timeout.

So each worker wakes up at least once per second even if nothing happens on the network. Is it a workaround against some problem? I though good event-driven program must not wake up if nothing happened (i. e. call "select" with infinite timeout). There is no explanation in the sources.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦中楼上月下 2024-11-12 17:51:10

如果你想关闭服务器怎么办?如果我们不使用超时,我们只会在来自网络的真实事件时唤醒,可能需要很长时间才能以干净的方式关闭(也许永远不会)。
这些超时在大多数情况下是可以接受的,我们不必在发出关闭命令后等待太长时间,并且检查事件循环不会占用太多CPU资源。

What if you want to shutdown the server?, If we don't use a timeout, we only wake up when a real event come from network, it maybe take much time to shutdown in a clean way(maybe never).
These timeout are acceptable in most cases, we don't have to wait too long after issue shutdown command, and the checking event loop not take much CPU resource.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文