为 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:
- 1 x ServerBootStrap 处理连接的网络套接字。
- 1 x Bootstrap 附加到 ServerBootStrap。
- 2 x Bootstrap 用于不同的报价数据源(远程服务器)。
阅读这张特别的幻灯片,我只需创建一次我的 NioEventLoopGroup 并将其用于所有列出的 BootStrap。
问题是,我不知道这是否是个好主意,也不知道是否有任何限制。引述 "re-use ... if you can!" 但我不知道该声明暗示的限制。
陈述一些数字:ServerBootStrap 应该处理大约 10k 连接的网络套接字客户端。数据源将保持不变,因此与远程服务器的 2 个保持连接。
欢迎任何评论!
总的来说,这完全没问题。只要你不在任何地方做任何阻塞操作。使用相同的 EventLoopGroup
可能会节省一些内存,也许 CPU。这实际上取决于您的用例。
但是,对于您的情况,我更愿意使用 2 EventLoopGroup
。服务器 Bootstrap 1 个,Bootstrap1 个。这是因为在高负载下(10k 网络套接字似乎喜欢可能的高负载),您会更容易检测到瓶颈。至少您可以确定问题不是来自 Bootstrap 个连接。
我这么说是因为最近我不得不在完全相同的情况下将我的单曲 EventLoopGroup
一分为二,以便找到 CPU 使用率高的原因。
Norman Maurer 有一篇小文章 Netty Best Practice Guide 建议尽可能重复使用 NioEventLoopGroup,更准确地说,指南指出
Re-use EventLoopGroup if you can!
就我而言,我编写了一个应用程序,将金融报价数据多路复用到一堆连接的网络套接字客户端。目前有三个引导程序,目前它们都使用单独的 NioEventLoopGroup:
- 1 x ServerBootStrap 处理连接的网络套接字。
- 1 x Bootstrap 附加到 ServerBootStrap。
- 2 x Bootstrap 用于不同的报价数据源(远程服务器)。
阅读这张特别的幻灯片,我只需创建一次我的 NioEventLoopGroup 并将其用于所有列出的 BootStrap。
问题是,我不知道这是否是个好主意,也不知道是否有任何限制。引述 "re-use ... if you can!" 但我不知道该声明暗示的限制。
陈述一些数字:ServerBootStrap 应该处理大约 10k 连接的网络套接字客户端。数据源将保持不变,因此与远程服务器的 2 个保持连接。
欢迎任何评论!
总的来说,这完全没问题。只要你不在任何地方做任何阻塞操作。使用相同的 EventLoopGroup
可能会节省一些内存,也许 CPU。这实际上取决于您的用例。
但是,对于您的情况,我更愿意使用 2 EventLoopGroup
。服务器 Bootstrap 1 个,Bootstrap1 个。这是因为在高负载下(10k 网络套接字似乎喜欢可能的高负载),您会更容易检测到瓶颈。至少您可以确定问题不是来自 Bootstrap 个连接。
我这么说是因为最近我不得不在完全相同的情况下将我的单曲 EventLoopGroup
一分为二,以便找到 CPU 使用率高的原因。