最近搞 netty 开发。由于是新手,之前没注意 EventLoopGroup 的 nThread 设定。之前都是直接 new NioEventLoopGroup()。 据说 EventLoopGroup 默认 nThread 为 CPU 内核数量 * 2 ; boss 线程组(管理连接监听的)一般只要 1 线程(或者也直接默认 CPU2 ),work 则使用默认 CPU2 就行。
但是看到网上有个人 netty 代码里面用了各种高级 java 特性啥的,咋一看感觉高大上,然后发现他 boss 的 nThread 为 CPU 数量,work 则为 CPU*10,childChannel 的 EventLoopGroup 则是 handler 数量。
上述设置有什么好处吗??我自己本地跑他这个代码(忘记哪里找的了),偷懒没用专业工具啥的。至少 1s 内同一个用户发送 3-4 次数据给服务器,和服务器交互,打印了 当前线程的 name,没看出来有用到多余的 Thread,一直用的同一个。感觉设置那么多线程有点迷惑行为的样子。但是自己比较菜,不敢下定论,望高手指点一下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.