对ServerBootstrap和Bootstrap使用相同的netty EventLoopGroup是一个好主意吗?

时间:2017-11-06 10:34:11

标签: netty nio event-loop

Norman Maurer有一个小Netty Best Practice Guide建议尽可能重复使用NioEventLoopGroup,更确切地说,指南说明

  

如果可以,请重复使用EventLoopGroup!

就我而言,我编写了一个应用程序,将财务报表数据多路复用到一堆连接的Web套接字客户端。目前有三个bootstrap,目前它们都使用单独的NioEventLoopGroup:

  • 1 x ServerBootStrap处理连接的Web套接字。
  • 1 x Bootstrap附加到ServerBootStrap。
  • 2 x用于不同节拍数据源(远程服务器)的Bootstrap。

阅读这个特定的幻灯片,我只需创建一次NioEventLoopGroup并将其用于所有列出的BootStraps。

问题是,我不知道这是不是一个好主意,也不知道是否有任何限制。引用声称“重复使用......如果可以的话!”但我不知道这句话所暗示的局限性。

说明一些数字:ServerBootStrap应该处理~10k连接的Web套接字客户端。数据源将保持不变,因此与远程服务器建立2个保持活动连接。

对任何评论感到高兴!

1 个答案:

答案 0 :(得分:2)

总的来说,这完全没问题。只要您不在任何地方进行任何阻止操作。使用相同的EventLoopGroup可以节省一些内存,也许是一些CPU。这实际上取决于您的使用案例。

但是,在您的情况下,我更愿意选择2 EventLoopGroup。 1表示ServerBootstrap,1表示Bootstrap。这是因为高负载(并且10k网络套接字似乎可能具有高负载),您将更容易检测到瓶颈。至少你可以确定问题不是来自Bootstrap连接。

我说这是最近我必须将我的单EventLoopGroup分成两个完全相同的情况才能找到高CPU使用率的原因。