学习第38、39节
参数调整要点:
• option/childOption 傻傻分不清:不会报错,但是会不生效;
• 不懂不要动,避免过早优化。
• 可配置(动态配置更好)
• 需要调整的参数:
• 最大打开文件数
• TCP_NODELAY SO_BACKLOG SO_REUSEADDR
ChannelOption
• childOption(ChannelOption.[XXX], [YYY])
• option(ChannelOption.[XXX], [YYY])
• System property
• -Dio.netty.[XXX] = [YYY]

• ALLOCATOR 与 RCVBUF_ALLOCATOR
• 功能关联:
ALLOCATOR 负责 ByteBuf 怎么分配(例如:从哪里分配),RCVBUF_ALLOCATOR 负责计算为接收数据接分配多少 ByteBuf:
例如,AdaptiveRecvByteBufAllocator 有两大功能:
(1)动态计算下一次分配 bytebuf 的大小:guess();
(2)判断是否可以继续读:continueReading()
• 代码关联:
io.netty.channel.AdaptiveRecvByteBufAllocator.HandleImpl handle = AdaptiveRecvByteBufAllocator.newHandle();
ByteBuf byteBuf = handle.allocate(ByteBufAllocator)
其中: allocate的实现:
ByteBuf allocate(ByteBufAllocator alloc)
{
return alloc.ioBuffer(guess());
}
• System property (-Dio.netty.xxx,50+ )
• 多种实现的切换:-Dio.netty.noJdkZlibDecoder
• 参数的调优: -Dio.netty.eventLoopThreads
• 功能的开启关闭: -Dio.netty.noKeySetOptimization

• 一些其他重要的参数:
• NioEventLoopGroup workerGroup = new NioEventLoopGroup();
workerGroup.setIoRatio(50);
• 注意参数的关联
• 临时存放 native 库的目录: -> io.netty.native.workdir > io.netty.tmpdir
• 注意参数的变更
• io.netty.noResourceLeakDetection -> io.netty.leakDetection.level



注:内容参考极客时间相关课程
本文介绍了Netty中参数调优的关键点,包括option/childOption的区分、避免过早优化、动态配置的重要性。重点关注最大打开文件数、TCP_NODELAY、SO_BACKLOG、SO_REUSEADDR等参数,以及ChannelOption和System property的设置。文章还详细讨论了ALLOCATOR和RCVBUF_ALLOCATOR的作用,并提及AdaptiveRecvByteBufAllocator的功能。同时提到了如-Dio.netty.eventLoopThreads、-Dio.netty.noKeySetOptimization等开关和优化选项,以及NioEventLoopGroup的ioRatio参数。此外,还强调了参数间的关联性以及临时目录的设置。

3412

被折叠的 条评论
为什么被折叠?



