首页 > 其他分享 >Netty 的 ChannelOption.SO_BACKLOG 知识点整理

Netty 的 ChannelOption.SO_BACKLOG 知识点整理

时间:2023-08-28 13:56:20浏览次数:35  
标签:知识点 Netty 队列 SO 连接 BACKLOG ChannelOption

Netty 的 ChannelOption.SO_BACKLOG 知识点整理

 一个基于 Netty 的应用,在压力测试时,Socket 请求数量一多,就发送失败,监测 JVM 内存大小比较稳定,猜测可能是 ChannelOption.SO_BACKLOG 这个配置导致的,设置的值是 128 。

调整为 1024 后,连接失败的次数确实减少了一些,那么这个配置到底有什么作用呢?

本文来汇总一下这个知识点。

TCP/IP 的三次握手
TCP/IP 建立连接的三个阶段被称为“三次握手”,三次握手完成后,客户端和服务端建立连接,开始传输数据。 

 

三次握手,这个图真的看到很多遍了哇,再回一下流程,像极了两个街头对接的人:

A:SYN ,客户端发起同步请求。你好呀,听说你开启了监听端口,我想给你传数据,方便建立连接吗,我先发一个序列号 x ?
B:SYN + ACK ,服务端发起同步请求。是的呀,我给你发一个我的序列号 y,对了,你的下一个序列号是 x +1 吗?
A:ACK,客户端确认请求,对着呢,你的下一个序列号 y+1 吗?
这三轮同步和确认操作后,客户端和服务器端就建立起了稳定的连接。

 

两个队列
这个过程中,服务器内核会用到两个队列:

syn 队列:未完成三次握手的连接,记作 A 队列;
accetp 队列:已完成三次握手,内核正等待进程执行 accept 函数的连接,记作 B 队列。
ChannelOption.SO_BACKLOG 配置就是控制 A + B 队列总长度的参数,如果这两个队列都满了,那么 Netty 服务将不会再接收新的连接请求了。

 
————————————————
版权声明:本文为CSDN博主「毕小宝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wojiushiwo945you/article/details/120021653

标签:知识点,Netty,队列,SO,连接,BACKLOG,ChannelOption
From: https://www.cnblogs.com/kelelipeng/p/17662089.html

相关文章

  • 红黑树的知识点以及源码
    花了几个小时看了B站大佬刘冬煜讲解红黑树源码和性质,对红黑树知识有了一个很清晰的理解。满满的成就感,把大佬有关红黑树的资料借用了一下,做了一点简单的修改。红黑树具有如下的性质:1.红黑树是一颗平衡二叉搜索树,其中序遍历单调不减。2.节点是红色或者黑色。3.根节点是黑色。......
  • Redisson幂等校验例子
    在添加接口增加幂等校验,防止用户在短时间内重复调用添加接口importorg.apache.commons.lang3.ArrayUtils;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.aspectj.lang.annotation.Point......
  • java与es8实战之三:Java API Client有关的知识点串讲
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本篇是《java与es8实战》系列的第三篇,将一些重要的知识点在这里梳理清楚,为后面的实践奠定基础一共有七个与JavaAPIClient有关的重要知识点关于namespace:每......
  • UltraISO制作U盘版WIN7安装盘
    注:制作U盘启动时会格式化U盘,注意备份U盘资料一.你需要准备的东西:1.Windows7的安装镜像,通常是ISO格式的2.软碟通软件,即UltraISO。先安装软件:UltraISOPEv9.363.≥4G的U盘一个。二.开始1.插上U盘,备份你U盘里的重要资料,运行UltraISO->“文件”->“打开...”->打开WIN7的ISO镜像文......
  • Spring3中替换默认拦截器的方法BeanFactoryPostProcessor
    由于Spring默认的静态资源处理器不能满足需求,需要做一些自己的处理,但mvc:resources的标签又挺好用的,不想每次配置静态资源目录的时候,还要特殊指定处理器,也不想修改任何配置代码,于是找到了使用BeanFactoryPostProcessor的方法 实现代码如下:importorg.springframework.beans.Beans......
  • 在SpringBoot中使用WebSocket
    一、概述最近在SpringBoot中用到了WebSocket的功能,在此记录一下使用步骤。SpringBoot使用WebSocket还是比较简单的,只需要4步就行了。如下二、使用步骤第一步:在pom.xml文件中导入坐标<!--websocketdependency--><dependency><grou......
  • Leetcode 383. 赎金信(Ransom note)
    题目链接给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例1:输入:ransomNote="a",magazine="b"输出:false示例2:输入:ransom......
  • 方法技巧,注意事项这类小知识点吧
    cin可以读取连续元素的单个元素,类似getchar()使用printf时最好添加头文件#include<cstdio>%08.3f,表示最小宽度为8,保留3位小数,当宽度不足时在前面补上(对整型补0时不能打点号)fgets不会删除行末的回车字符strcmp(a,b)比较两个字符串的大小,a<b返回-1,a==b返回0,a>b返回......
  • AgileConfig-1.7.0 发布,支持 SSO
    AgileConfig已经好久好久没有更新过比较大的功能了。一是AgileConfig本身的定位就是比较轻量,不想集成太多的功能。二是比较忙(懒)。但是本次升级给大家带来了一个比较有用的功能SSO。SSO嘛大家都懂,单点登录,稍微上点规模的公司内部都会有统一的单点登录服务。目前SSO主流协......
  • 带样式的console.log
    log的二次封装具体代码functionprint(info){constcontentArr=info.map(info=>info.content);conststyleArr=info.map(info=>info.style).map(style=>style.join(""));console.log(`%c${contentArr.join('%c')}`,...sty......