1
上下文是Netty 3.5.x.Netty - NioWorker池和工作線程池之間的關係
創建NioServerSocketChannelFactory
或NioClientSocketChannelFactory
時,NioWorker
的數量與工作線程池中的線程數之間的關係是什麼? Netty的設計是否規定線程池中可用的線程數至少爲NioWorkers
?如果線程池中的線程數少於NioWorker
s,會發生什麼情況?
謝謝你的回答。根據我的經驗,如果線程池中的線程數少於'NioWorker'的數量,客戶端或服務器有時無法長時間完成連接請求(在內部,老闆線程提交的註冊任務似乎永遠不會拿起)。我不知道Netty是否允許創建'ChannelFactory'對象,其中線程池中的最大線程數小於'NioWorker'的數量。 – atuladhar
目前,如果您使用僅包含2個執行程序的構造函數(例如'NioClientSocketChannelFactory(Executor,Executor)'),那麼很容易犯這個錯誤。默認情況下,Netty會創建兩倍於NioWorker的數目,如果工作者執行者不能提供至少那麼多的線程,你會得到間歇性的連接失敗。另外,如果關聯是真正的1:1,這可能是值得在JavaDoc中明確表達的東西。 – atuladhar