netty的组件EventLoop中一个Selector包含多少个channel?
Netty 的服务端是业务代码处理逻辑是由 WorkerGroup 来完成的,而 WorkerGroup 是由多个 EventLoop 构成的。
一个 EventLoop 持有一个 Selctor,而一个 Selector 可以管理多个 Channel。
EventLoop 的个数可以由构造函数决定,那么 EventLoop 里面包含的 Channel 个数是多少,由谁决定?
回答:
Channel的个数理论上受限于JVM和操作系统的资源以及系统配置了。
每个Channel对象对应底层操作系统的一个socket文件句柄;而Selctor对应Linux的epoll【理论上无上限】。
那么对于操作系统来说可能的制约因素:
- 物理内存
- 最大可打开文件句柄数【包括系统、单个进程、用户可以打开的文件句柄数】
- 虚拟内存映射大小
JVM来说可能的制约因素:
- 堆内存+直接内存大小
当然这是理想化的推论,实际可能还有很多其他问题;
以上是 netty的组件EventLoop中一个Selector包含多少个channel? 的全部内容, 来源链接: utcz.com/p/944453.html