知识卡片
NIO线程不可阻塞的架构约束
内容
Netty默认启动CPU核数两倍NIO线程,但单机可能承载几万甚至几十万连接,一个NIO线程要服务上千Channel。事件循环对一批可读Channel逐个跑完Pipeline,只要某Handler的channelRead0阻塞(如同步数据库调用),就拖住该线程绑定的其他连接,正确做法是把耗时操作丢进业务线程池。发散:少量线程管理海量连接,代价是阻塞被放大成一批连接集体拖慢,是事件循环模型通用陷阱,也是[[IO与NIO的连接调度模型差异]]里线程级调度模型必须付出的代价。
参考来源
《跟闪电侠学Netty:Netty即时聊天实战与底层原理》第19章《群聊消息的收发及Netty性能优化》