有一个小Netty Best Practice Guide Norman Maurer 提出,建议尽可能重用 NioEventLoopGroup,更准确地说,指南指出
Re-use EventLoopGroup if you can!
就我而言,我编写了一个应用程序,将金融报价数据多路传输到一组连接的 Web 套接字客户端。目前存在三个 Bootstrap ,目前所有 Bootstrap 都使用单独的 NioEventLoopGroup:
- 1 x ServerBootStrap 处理连接的 Web 套接字。
- 1 x Bootstrap 连接到 ServerBootStrap。
- 2 个针对不同报价数据源(远程服务器)的 Bootstrap。
阅读这张特定的幻灯片,我只需创建一次 NioEventLoopGroup 并将其用于所有列出的 BootStrap。
问题是,我不知道这是否是一个好主意,也不知道是否有任何限制。引用中说“如果可以的话,重复使用!”但我不知道这个说法暗示的局限性。
陈述一些数字:ServerBootStrap 应该处理大约 10k 连接的 Web 套接字客户端。数据源将保持不变,因此与远程服务器有 2 个保持事件连接。
欢迎任何评论!
最佳答案
总的来说,这完全没问题。只要你不在任何地方进行任何阻塞操作。使用相同的 EventLoopGroup
可能会节省一些内存,也许还有一些 CPU。这实际上取决于您的用例。
但是,就您而言,我更愿意使用 2 个 EventLoopGroup
。 1 用于 ServerBootstrap,1 用于 Bootstrap。这是因为在高负载的情况下(10k Web 套接字似乎喜欢可能的高负载),您会更容易检测到瓶颈。至少您可以确定问题不是来自 Bootstrap 连接。
我这么说是因为最近我不得不将单个 EventLoopGroup
拆分为两个完全相同的情况,以便找到 CPU 使用率高的原因。
关于netty - 对于 ServerBootstrap 和 Bootstrap 使用相同的 netty EventLoopGroup 是一个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134860/