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

对ServerBootstrap和Bootstrap使用相同的netty EventLoopGroup是一个好主意吗?,netty,nio,event-loop,Netty,Nio,Event Loop,《指南》指出,诺曼·莫雷尔(Norman Maurer)有一个小建议,建议尽可能重复使用一个组 如果可以,请重新使用EventLoopGroup 在我的例子中,我编写了一个应用程序,将财务数据多路传输到一组连接的web套接字客户端。目前有三个引导,它们都使用一个单独的NioEventLoopGroup: 1台服务器引导程序处理连接的web套接字 1个引导程序连接到服务器引导程序 2个用于不同tick数据源(远程服务器)的引导 阅读这张特定的幻灯片,我只需创建一次我的NioEventLoopG

《指南》指出,诺曼·莫雷尔(Norman Maurer)有一个小建议,建议尽可能重复使用一个组

如果可以,请重新使用EventLoopGroup

在我的例子中,我编写了一个应用程序,将财务数据多路传输到一组连接的web套接字客户端。目前有三个引导,它们都使用一个单独的NioEventLoopGroup:

  • 1台服务器引导程序处理连接的web套接字
  • 1个引导程序连接到服务器引导程序
  • 2个用于不同tick数据源(远程服务器)的引导
阅读这张特定的幻灯片,我只需创建一次我的NioEventLoopGroup,并将其用于所有列出的引导

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

陈述一些数字:ServerBootStrap应该处理~10k连接的web套接字客户端。数据源将保持不变,因此有2个到远程服务器的保持活动连接


很高兴有任何评论

一般来说,这完全没问题。只要你不在任何地方做任何阻塞操作。使用相同的
EventLoopGroup
可以节省一些内存,可能是一些CPU。这实际上取决于您的用例

但是,在您的情况下,我更喜欢使用2
EventLoopGroup
。1个用于服务器引导,1个用于引导。这是因为使用高负载(10k web套接字似乎喜欢可能的高负载),您将更容易检测瓶颈。至少您可以确定问题不是来自引导连接


最近我这样说,为了找到CPU使用率高的原因,我不得不在相同的情况下将我的单个
EventLoopGroup
拆分为两个。如果我理解正确,您将使用相同的EventLoopGroup作为服务器boss和worker组:
EventLoopGroup serverEventLoop=new NioEventLoopGroup();ServerBootstrap服务器=新的ServerBootstrap();server.group(serverEventLoop,serverEventLoop)
和一个单独的用于我的tick源引导的组:
EventLoopGroup tickEventLoop=new NioEventLoopGroup();引导源=新引导();source.group(tickEventLoop)否。老板和员工始终是独立的组-和用法-