aoi.tsukasa 2022-01-20 05:43 采纳率: 75%
浏览 57
已结题

在NIO中,一个selector会被分配多少channel,或者说分配多少个较为合适呢?

在NIO中,一个selector会被分配多少channel,或者说分配多少个较为合适呢?

  • 写回答

1条回答 默认 最新

  • IT不码农 2022-01-20 07:23
    关注

    channel是注册到selector上的,不是分配的。Channel.register(selector,事件类型),事件类型有连接,读取、写入等。一个selector可以注册很多的channel,没啥限制。因为我现在没咋用java原生的nio,只是知道大概机制,如果要进行nio的编程,建议用netty框架

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    aoi.tsukasa 2022-01-20 08:14

    那默认一个selector会有多少个channel注册到这个selector上呢?又或者说在Netty中一个EventLoop会负责多少个channel?

    回复
    aoi.tsukasa 2022-01-20 08:20

    其实我是想问,假设有100个连接,采用NIO的方式要服务端要分配几个线程。

    回复
    IT不码农 回复 aoi.tsukasa 2022-01-20 09:45

    我先说下Netty里EventLoop,如果不设置的线程数的话,默认的就是jvm可以用处理器数量的2倍。在netty源码里看到。

    img

    img

    比如机器是8核心16线程的机器,Runtime.getRuntime().availableProcessors() 拿到处理数就16。

    至于要分配多少线程,这个就根据你的handler程序处理业务的平均时间,在加上业务要达到的并发指标大致评估一下。比如说你的程序处理的时间20ms,那一个线程在1s内能处理50连接请求,并发量要求1s内100请求处理的话,那线程数就设置3,稍大一点。

    回复
    展开全部6条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月20日
  • 创建了问题 1月20日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部