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

Is it a good idea to use the same netty EventLoopGroup for both ServerBootstrap and Bootstrap?

Norman Maurer 有一篇小文章 Netty Best Practice Guide 建议尽可能重复使用 NioEventLoopGroup,更准确地说,指南指出

Re-use EventLoopGroup if you can!

就我而言,我编写了一个应用程序,将金融报价数据多路复用到一堆连接的网络套接字客户端。目前有三个引导程序,目前它们都使用单独的 NioEventLoopGroup:

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

问题是,我不知道这是否是个好主意,也不知道是否有任何限制。引述 "re-use ... if you can!" 但我不知道该声明暗示的限制。

陈述一些数字:ServerBootStrap 应该处理大约 10k 连接的网络套接字客户端。数据源将保持不变,因此与远程服务器的 2 个保持连接。

欢迎任何评论!

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

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

我这么说是因为最近我不得不在完全相同的情况下将我的单曲 EventLoopGroup 一分为二,以便找到 CPU 使用率高的原因。