ChannelConfig

类体系

这里写图片描述

Channel通用参数

  • CONNECT_TIMEOUT_MILLIS:连接超时时间,默认30s;
  • ALLOCATOR:ByteBuf分配器,默认为PooledByteBufAllocator;
  • RCVBUF_ALLOCATOR:接受缓冲区分配器,默认为AdaptiveRecvByteBufAllocator;
  • AUTO_READ:当Channel的接受缓冲区有数据时,是否自动产生OP_READ事件,默认为True,即OP_READ一直注册在Selector中;
  • WRITE_BUFFER_HIGH_WATER_MARK:写高水位标记,默认值64KB。如果Netty的写缓冲区ChannelOutboundBuffer中的字节超过该值,Channel的isWritable()返回False。
  • WRITE_BUFFER_LOW_WATER_MARK:写低水位标记,默认值32KB。当Netty的写缓冲区中的字节超过高水位之后若再下降到低水位,则Channel的isWritable()返回True。写高低水位标记可以用来控制用户写入数据速度,从而实现流量控制。推荐做法是:每次调用channl.write(msg)方法首先调用channel.isWritable()判断是否可写。

SocketChannel参数

  • SO_RCVBUF:接受缓冲区大小;
  • SO_SNDBUF:发送缓冲区大小;
  • TCP_NODELAY:是否立即发送数据,默认值为Ture。是否启用Nagle算法的开关,该算法将小的碎片数据连接成更大的报文来最小化所发送的报文的数量,如果需要发送一些较小的报文,则需要禁用该算法。Netty默认禁用该算法,从而最小化报文传输延时。
  • SO_KEEPALIVE:是否启用TCP的KeepAlive机制,默认为False。
  • SO_REUSEADDR:是否允许地址复用,默认为False。
  • SO_LINGER:关闭Socket的延迟时间,默认值为-1,表示禁用该功能。-1表示socket.close()方法立即返回,但OS底层会将发送缓冲区全部发送到对端;0表示socket.close()方法立即返回,但OS放弃发送缓冲区的数据直接向对端发送RST包,对端收到复位错误;非0整数值表示调用socket.close()方法的线程被阻塞直到延迟时间到或发送缓冲区中的数据发送完毕,若超时,则对端会收到复位错误。

ServerSocketChannel参数

  • SO_BACKLOG:服务端接受连接的队列长度,如果队列已满,客户端连接将被拒绝。默认值,Windows为200,其他为128。

猜你喜欢

转载自blog.csdn.net/yangguosb/article/details/80183225