Netty:option和childOption参数设置说明

2023-10-26

 
 

转载:http://www.jianshu.com/p/0bff7c020af2

Channel配置参数

(1).通用参数

CONNECT_TIMEOUT_MILLIS :
  Netty参数,连接超时毫秒数,默认值30000毫秒即30秒。
MAX_MESSAGES_PER_READ
  Netty参数,一次Loop读取的最大消息数,对于ServerChannel或者NioByteChannel,默认值为16,其他Channel默认值为1。默认值这样设置,是因为:ServerChannel需要接受足够多的连接,保证大吞吐量,NioByteChannel可以减少不必要的系统调用select。
WRITE_SPIN_COUNT
  Netty参数,一个Loop写操作执行的最大次数,默认值为16。也就是说,对于大数据量的写操作至多进行16次,如果16次仍没有全部写完数据,此时会提交一个新的写任务给EventLoop,任务将在下次调度继续执行。这样,其他的写请求才能被响应不会因为单个大数据量写请求而耽误。
ALLOCATOR
  Netty参数,ByteBuf的分配器,默认值为ByteBufAllocator.DEFAULT,4.0版本为UnpooledByteBufAllocator,4.1版本为PooledByteBufAllocator。该值也可以使用系统参数io.netty.allocator.type配置,使用字符串值:"unpooled","pooled"。
RCVBUF_ALLOCATOR
  Netty参数,用于Channel分配接受Buffer的分配器,默认值为AdaptiveRecvByteBufAllocator.DEFAULT,是一个自适应的接受缓冲区分配器,能根据接受到的数据自动调节大小。可选值为FixedRecvByteBufAllocator,固定大小的接受缓冲区分配器。
AUTO_READ
  Netty参数,自动读取,默认值为True。Netty只在必要的时候才设置关心相应的I/O事件。对于读操作,需要调用channel.read()设置关心的I/O事件为OP_READ,这样若有数据到达才能读取以供用户处理。该值为True时,每次读操作完毕后会自动调用channel.read(),从而有数据到达便能读取;否则,需要用户手动调用channel.read()。需要注意的是:当调用config.setAutoRead(boolean)方法时,如果状态由false变为true,将会调用channel.read()方法读取数据;由true变为false,将调用config.autoReadCleared()方法终止数据读取。
WRITE_BUFFER_HIGH_WATER_MARK
  Netty参数,写高水位标记,默认值64KB。如果Netty的写缓冲区中的字节超过该值,Channel的isWritable()返回False。
WRITE_BUFFER_LOW_WATER_MARK
  Netty参数,写低水位标记,默认值32KB。当Netty的写缓冲区中的字节超过高水位之后若下降到低水位,则Channel的isWritable()返回True。写高低水位标记使用户可以控制写入数据速度,从而实现流量控制。推荐做法是:每次调用channl.write(msg)方法首先调用channel.isWritable()判断是否可写。
MESSAGE_SIZE_ESTIMATOR
  Netty参数,消息大小估算器,默认为DefaultMessageSizeEstimator.DEFAULT。估算ByteBuf、ByteBufHolder和FileRegion的大小,其中ByteBuf和ByteBufHolder为实际大小,FileRegion估算值为0。该值估算的字节数在计算水位时使用,FileRegion为0可知FileRegion不影响高低水位。
SINGLE_EVENTEXECUTOR_PER_GROUP
  Netty参数,单线程执行ChannelPipeline中的事件,默认值为True。该值控制执行ChannelPipeline中执行ChannelHandler的线程。如果为Trye,整个pipeline由一个线程执行,这样不需要进行线程切换以及线程同步,是Netty4的推荐做法;如果为False,ChannelHandler中的处理过程会由Group中的不同线程执行。

(2).SocketChannel参数

SO_RCVBUF
  Socket参数,TCP数据接收缓冲区大小。该缓冲区即TCP接收滑动窗口,linux操作系统可使用命令:cat /proc/sys/net/ipv4/tcp_rmem查询其大小。一般情况下,该值可由用户在任意时刻设置,但当设置值超过64KB时,需要在连接到远端之前设置。
SO_SNDBUF
  Socket参数,TCP数据发送缓冲区大小。该缓冲区即TCP发送滑动窗口,linux操作系统可使用命令:cat /proc/sys/net/ipv4/tcp_smem查询其大小。
TCP_NODELAY
  TCP参数,立即发送数据,默认值为Ture(Netty默认为True而操作系统默认为False)。该值设置Nagle算法的启用,改算法将小的碎片数据连接成更大的报文来最小化所发送的报文的数量,如果需要发送一些较小的报文,则需要禁用该算法。Netty默认禁用该算法,从而最小化报文传输延时。
SO_KEEPALIVE
  Socket参数,连接保活,默认值为False。启用该功能时,TCP会主动探测空闲连接的有效性。可以将此功能视为TCP的心跳机制,需要注意的是:默认的心跳间隔是7200s即2小时。Netty默认关闭该功能。
SO_REUSEADDR
  Socket参数,地址复用,默认值False。有四种情况可以使用:(1).当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你希望启动的程序的socket2要占用该地址和端口,比如重启服务且保持先前端口。(2).有多块网卡或用IP Alias技术的机器在同一端口启动多个进程,但每个进程绑定的本地IP地址不能相同。(3).单个进程绑定相同的端口到多个socket上,但每个socket绑定的ip地址不同。(4).完全相同的地址和端口的重复绑定。但这只用于UDP的多播,不用于TCP。
SO_LINGER
  Socket参数,关闭Socket的延迟时间,默认值为-1,表示禁用该功能。-1表示socket.close()方法立即返回,但OS底层会将发送缓冲区全部发送到对端。0表示socket.close()方法立即返回,OS放弃发送缓冲区的数据直接向对端发送RST包,对端收到复位错误。非0整数值表示调用socket.close()方法的线程被阻塞直到延迟时间到或发送缓冲区中的数据发送完毕,若超时,则对端会收到复位错误。
IP_TOS
  IP参数,设置IP头部的Type-of-Service字段,用于描述IP包的优先级和QoS选项。
ALLOW_HALF_CLOSURE
  Netty参数,一个连接的远端关闭时本地端是否关闭,默认值为False。值为False时,连接自动关闭;为True时,触发ChannelInboundHandler的userEventTriggered()方法,事件为ChannelInputShutdownEvent。

(3).ServerSocketChannel参数

SO_RCVBUF
  已说明,需要注意的是:当设置值超过64KB时,需要在绑定到本地端口前设置。该值设置的是由ServerSocketChannel使用accept接受的SocketChannel的接收缓冲区。
SO_REUSEADDR
  已说明
SO_BACKLOG
  Socket参数,服务端接受连接的队列长度,如果队列已满,客户端连接将被拒绝。默认值,Windows为200,其他为128。

(4).DatagramChannel参数

SO_BROADCAST: Socket参数,设置广播模式。

SO_RCVBUF: 已说明

SO_SNDBUF:已说明

SO_REUSEADDR:已说明

IP_MULTICAST_LOOP_DISABLED:
  对应IP参数IP_MULTICAST_LOOP,设置本地回环接口的多播功能。由于IP_MULTICAST_LOOP返回True表示关闭,所以Netty加上后缀_DISABLED防止歧义。

IP_MULTICAST_ADDR:
  对应IP参数IP_MULTICAST_IF,设置对应地址的网卡为多播模式。

IP_MULTICAST_IF:
  对应IP参数IP_MULTICAST_IF2,同上但支持IPV6。

IP_MULTICAST_TTL:
  IP参数,多播数据报的time-to-live即存活跳数。

IP_TOS:
  已说明

DATAGRAM_CHANNEL_ACTIVE_ON_REGISTRATION:
  Netty参数,DatagramChannel注册的EventLoop即表示已激活。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty:option和childOption参数设置说明 的相关文章

  • Ubuntu安装问题汇总

    1 开机提示acpi error 一般这个问题是因为显卡的原因造成的 系统没有带显卡驱动 所以会有电源管理方面的问题 解决方法 安装时在install ubuntu界面按e 在linux开头那行的末尾处加入 acpi off 然后保存进行安
  • 封装ReactBootstrap组件实现文字展开功能

    封装ReactBootstrap组件实现文字展开功能 ExpendableText js import React useRef useEffect useState from react import Container CardGrou
  • 使用anaconda配置pycharm解释器环境

    因为作业需要写python代码 需要选择一个合适的写python代码的软件 学长推荐我用anaconda的juypter来写 并且anaconda自己配置环境比较容易 所以我就下载了anaconda 但是我不喜欢网页的风格 所以下载了pyc
  • docker 通过Dockerfile安装jdk

    将自己下载好的jdk压缩包 我下载的是jdk 8u261 linux x64 tar gz 上传到服务器上 我是使用的ubuntu 将jdk 8u261 linux x64 tar gz 复制到你的docker目录下 之后创建一个Docke
  • Mac终端终止命令

    control c 结束进程 control z 结束进程
  • 【Unity】[入门tips与代码优化] 一些入门概念、技巧和优化程序的原则方法

    本文将持续间断更新 本文主要面向初级程序员 为了方便Unity开发 有些快捷键的方式和一些通用性的技巧tips等会在这篇博客内持续更新 欢迎点赞收藏 快捷键 Ctrl S 快捷保存 闲着没事就来两下 Ctrl Shift F 在hierar
  • element-ui 表格合并之后鼠标hover效果

    element ui 表格合并之后鼠标hover效果 这次主要介绍行合并后的hover效果处理 由于element ui合并行之后 鼠标经过时 默认只会高亮第一行 如下图 但实际我们想要的是 在鼠标经过这一合并行时 被合并的行都是高亮状态
  • 磁盘分区 fdisk,挂载

    1 磁盘的分区主要分为基本分区 primary partion 和扩充分区 extension partion 两种 基本分区和扩充分区的数目之和不能大于四个 且基本分区可以马上被使用但不能再分区 扩充分区必须再进行分区后才能使用 也就是说
  • Hadoop Core、HBase 、ZooKeeper

    adoop HBase ZooKeeper三者关系与安装配置 复制链接 qqjue 论坛徽章 18 电梯直达 1
  • 互联网的组成——边缘部分+核心部分 (互联网报文交换方式:分组转发技术)

    首先 复习的第一本书是 计算机网络 作为计算机专业的学生 计算机网络是必须学好的一门功课 互联网的组成 边缘部分 核心部分 从互联网的工作方式上看 可以划分为两大块 1 边缘部分 由所有连接在互联网上的主机组成 这部分是用户直接使用的 用来
  • 特征工程系列:自动化特征构造

    特征工程系列 自动化特征构造 原创 JunLiang 木东居士 今天 0x00 前言 数据和特征决定了机器学习的上限 而模型和算法只是逼近这个上限而已 由此可见 特征工程在机器学习中占有相当重要的地位 在实际应用当中 可以说特征工程是机器学
  • Python 中的默认值是什么?

    Python 语言具有表示函数参数的语法和默认值的不同方式 默认值指示如果在函数调用期间未给出参数值 则函数参数将采用该值 默认值是使用表单关键字名称 值的赋值 运算符分配的 例 creating a function by giving
  • JavaWeb——Servlet(入门必备,web请求与响应的底层)

    这里写自定义目录标题 1 servlet介绍 1 1 什么是servlet 1 2 手动实现servlet程序的步骤 2 servlet的生命周期 3 get请求与post请求的分发 3 1 get请求 3 2 post请求 3 3 通过继
  • MASK R-CNN网络介绍

    目录 前言 一 MASK R CNN网络 1 1 RoIPool和RoIAlign 1 2 MASK分支 二 损失函数 三 Mask分支预测 前言 在介绍MASK R CNN之前 建议先看下FPN网络 Faster R CNN和FCN的介绍
  • python数据可视化入门(五):饼图,环图,极线图,气泡图

    饼图 plt pie x explode None labels None colors None autopct None 1 labels 设置相对应数据的标签 2 labeldistance 设置标签距离圆心的距离 labeldist
  • 【C++ Primer Plus(第6版)中文版第二章开始学习C++(编程练习题)】

    关于个人学习C Primer Plus的第二章编程练习题 1 编写一个C 程序 它显示您的姓名和地址 2 编写一个C 程序 它要求用户输入一个以long为单位的距离 然后将它转换为码 一long等于220码 3 编写一个C 程序 它使用3个
  • CTF_webshow_web11

    d打开靶机 直接有源码 查看一下
  • Java Swing 经典小游戏之 ———— 黄金矿工

    一 效果预览 项目简介 1 游戏预览 2 玩法简介 1 开局一条红绳 左键让他变长 2 5个金块 分成 大中小 3个石块 3 3种速度 空爪 gt 抓回金块 gt 抓回石块 4 4个得分 获得 得分 大金块 30 中金块 20 小金块 10
  • MCU踩坑记录:SWD复用为GPIO使用,Jflash连不上的问题

    用了某款MCU 由于项目需要用的gpio比较多 只能将SWD烧写口SWD CLK和SWD DIO复用为gpio使用 但是程序一旦跑起来 再用jflash就连不上了 如下图所示 如果MCU有BOOT引脚 可以将BOOT引脚配置为其他启动模式不

随机推荐

  • vue脚手架如何创建vue项目

    vue脚手架如何创建vue项目 1 打开命令行 进入需要创建目录的文件夹 或者在需要创建目录的文件夹进入cmd窗口 1 先查看以下vue脚手架是否下载 命令行输入npm list g 1 2 如果没下载vue脚手架 则输入命令npm ins
  • Java开发人员必知必会的20种常用类库和API

    Java开发人员必知必会的20种常用类库和API 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车 Effective Java 的作者Joshua Bloch曾经说过 建议使用现有的API来开发 而不是重复造轮子 在本文中
  • Spring cloud Gateway常用配置

    gateway里的常用配置 前面的例子是通过路径 Path 方式配置路由转发 gateway还还有其他的配置 下面做个简单的介绍 1 路由 route Route 主要由 路由id 目标uri 断言集合 过滤器集合组成 前面的实例用到了id
  • python 获取网页视频

    代码实现 import tkinter import tkinter messagebox import os import os path import you get 获取当前工作目录 path os getcwd 设置当前目录为工作目
  • LeetCode 460. LFU Cache

    原题网址 https leetcode com problems lfu cache Design and implement a data structure for Least Frequently Used LFU cache It
  • 吐血推荐那些提升开发人员工作效率的在线工具

    来源 公众号 作者 Hollis 作为一个Java开发人员 经常要和各种各样的工具打交道 除了我们常用的IDE工具以外 其实还有很多工具是我们在日常开发及学习过程中要经常使用到的 Hollis偏爱使用在线工具 因为个人觉得这样比较方便 本文
  • crontab定时启动scrapy爬虫

    部署到测试环境 并设置定时启动任务 通过FileZille工具 将本地的文件上传到测试服务器上面的python文件夹中 在与spider同级目录下写一个shell脚本 启动所编辑的运行爬虫文件 vi run sh 1 bin sh 2 ex
  • 修改服务器数据库名称,修改服务器数据库名称

    修改服务器数据库名称 内容精选 换一换 弹性云服务器能否ping通华为云关系型数据库实例 如果ping不通 可以查看弹性云服务器和华为云关系型数据库实例是否处于同一个虚拟私有云内 是否使用同一个安全组 如果ping不通 可以查看弹性云服务器
  • Aviator这么丝滑,怎么实现的呢?

    大家好 我是老三 在上期 里我们介绍了轻量级规则引擎AviatorScript的基本用法和一些使用案例 这期我们来研究一下 这么丝滑的规则脚本是怎么实现的 概览 我们先来回顾一个简单的例子 Test public void test 表达式
  • element 模态框内,表单编辑回填的值在关闭时,表单内容无法正确重置问题

    element 表单使用 this refs formName resetFields 进行数据重置 但重置的初始数据是基于表单第一次渲染时的数据为模板 由于点击编辑时 模态框显示与表单内容渲染是同时进行 所以 el form 就认为回填值
  • STM32--TIM定时器(3)

    文章目录 输入捕获简介 频率测量 输入捕获通道 输入捕获基本结构 PWMI的基本结构 输入捕获模式测量PWM频率和占空比 代码 编码器接口 正交编码器 工作模式 接口基本结构 TIM编码接口器测速 代码 输入捕获简介 输入捕获IC Inpu
  • 传奇服务器文件组成,【教程】传奇服务端(版本)的结构以及重要文件功能的概述-A02...

    第A02课 传圌奇私圌服服圌务端 版本 的结构以及重要文件功能的概述 有很多新人根本不了解传圌奇的结构 学习的时候就比较困难 所以才设置了这么一课 以下是服圌务端主要文件位置与用途
  • Qt实现多线程编程的两种方式

    Qt实现多线程编程的两种方式 方式一 继承自QThread类 覆写run函数 此实现方法只有run函数内的代码是运行在子线程内 代码示例 ifndef QDEMOTHREAD H define QDEMOTHREAD H include
  • 自定义控件MeasureSpecs与measure的理解

    MeasureSpace 是android中父view传递给子view的用来描述对子 view布局需求的数据类型 也就是说父布局把它希view的大小以及变化的尺度分装在这个类里 而子view的measure 方法拿到这个数值 则会根据这个数
  • 【基于机器学习的全国降水量预测分析可视化-哔哩哔哩】 https://b23.tv/RsGfqeD

    基于机器学习的全国降水量预测分析可视化 哔哩哔哩 https b23 tv RsGfqeD https b23 tv RsGfqeD
  • Python脚本报错AttributeError: ‘module’ object has no attribute’get’解决方法

    发现代码都没有错 后来是改成这样 def pprint name var get print name var StringVar Label root text 姓名 font 微软雅黑 20 grid inputStr1 Entry r
  • RabbitMQ消息队列(转)

    转自 https www jianshu com p 79ca08116d57 关于消息队列 从前年开始断断续续看了些资料 想写很久了 但一直没腾出空 近来分别碰到几个朋友聊这块的技术选型 是时候把这块的知识整理记录一下了 市面上的消息队列
  • darknet-yolov4编译

    在个人win10上运行darknet yolov4 准备 电脑msi显卡 gtx1050ti 4g 驱动451以上 内存金士顿8g 必须项准备 先安装vs2017 必须勾选c 再cuda 我装了cuda10 0和9 2 上移环境变量 使10
  • 高级数据库总结

    总结 一 总结笔记 首先是我们会用到的几张数据表 1 学习数据库的必要性 时代迎来大数据时代 数据量的庞大已经不足以用人力来计算 为此我们需要一个软件或者一套流程来解决这个问题 那么数据库肯定是最佳选择 学点东西总是好的 2 Mysql数据
  • Netty:option和childOption参数设置说明

    转载 http www jianshu com p 0bff7c020af2 Channel配置参数 1 通用参数 CONNECT TIMEOUT MILLIS Netty参数 连接超时毫秒数 默认值30000毫秒即30秒 MAX MESS