1

我试图找出在 3.6.3 中调用 NioWorkerPool.rebuildSelectors() 的位置。

在将 Netty 从 3.5.11 升级到任何 3.6.x 版本后,只要我们通过基于 Nio 的 ServerSocket 通道工厂执行任何通信,就会遇到 CPU 问题。默认池中的所有 200 个线程开始以大约 45-55% 的 CPU 运行并且永远不会返回 - 所有堆栈都显示它们位于 select()...poll() 逻辑中。

我的问题是,我不知道什么时候应该调用它,也不知道它暴露在哪里。NioWorkerPool 在 channelfactory 实例中是私有的。在我的 ChannelFactory 上访问 NioWorkerPool 的推荐方法是什么 - 假设这是进行此调用的地方。

谢谢,鲍勃

4

1 回答 1

1

当你构造 aNioServerSocketChannelFactory时,你可以指定你创建的 aNioBossPool和 a NioWorkerPool。不要使用快捷构造函数,而是使用接受它们的构造函数。然后,您已经拥有对这些对象的引用,您可以在需要时调用它们。

rebuildSelectors()如果打电话确实可以解决您的问题,请告诉我们。因为遇到这样的问题并不容易,我们很好奇我们的解决方法是否有助于缓解它。

于 2013-02-26T18:52:08.660 回答