netty常用channelOption说明

本文详细解析RocketMQ服务端和客户端中Netty的channelOption设置,涵盖SO_BACKLOG、SO_REUSEADDR、SO_KEEPALIVE、TCP_NODELAY等,以及它们在高并发场景下的应用和区别。

本文通过rocketMq源码说明netty中常见channelOption的含义和用法

先看服务端 

SO_BACKLOG:用于指定服务端连接队列长度,当服务器连接处理线程全忙时,已完成三次握手的请求会被临时存放在连接队列中等待被accept,队列满后会拒绝新收到的连接请求

如不设置,该值默认为200左右,对于连接数不太多的场景,默认值就够了,像常见RPC框架的服务端(如dubbo)就没有设置,RocketMq需要支持更高频的连接请求,所以使用了推荐值1024

SO_REUSEADDR:TCP四次挥手的最后阶段,主动发起关闭的一端会处于TIME_WAIT状态,该状态下的socket所用端口无法被复用(默认时间2MSL=4分钟);

在服务端客户端架构中,通常是服务端主动发起连接关闭,在大量连接的场景中,无论是频繁关闭连接和新建连接,还是服务端重启,都需要端口资源,4分钟太长了,不能忍。

SO_REUSEADDR=true就是通知内核,如果端口忙,但socket状态是TIME_WAIT,可以立即重用端口因为端口资源限制,该配置算是服务端必备的了

SO_KEEPALIVE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值