美文网首页
socket的连接队列backlog与tcp_abort_on_

socket的连接队列backlog与tcp_abort_on_

作者: 拿着滋水枪的消防员 | 来源:发表于2022-04-07 12:23 被阅读0次

很早之前 在排查对socket的连接队列相关的问题时候遇到的问题。

建立socket连接的过程:
1.client发syn请求给server
2.server收到后把请求存放在SYN queue里,这个半连接队列的最大值是系统参数 tcp_max_syn_backlog定义的
3.存放在半连接队列后发送syn+ack给client,client收到后再发syn+ack给server完成三次握手,然后server把连接存放在accept queue ,这个队列长度就是程序里调用socket的时候定义的backlog定义大小。
4.应用程序通过调用accept()到accept queue里获取连接。
坑爹的特性来了!注意!
当accept queue满了会怎么样?
!!注意!如果accept队列满了,linux会出现一个异常处理,去判断tcp_abort_on_overflow系统参数是否为1,如果为1 ,则会发出拒绝客户端的终止讯息并断开连接。但是如果这个参数是0,那就坑爹了!,对于溢出队列的连接,linux不会去管它,会继续正常建立连接,但是在accept queue里没有,那就意味着你的程序用accept()函数无法取的连接!这是多么的坑爹啊!!!根本查不出原因好么!!!各种被误导好么!!!尼玛linux啊!!

相关文章

  • socket的连接队列backlog与tcp_abort_on_

    很早之前 在排查对socket的连接队列相关的问题时候遇到的问题。 建立socket连接的过程:1.client发...

  • tcp内核参数备忘

    tcp_max_syn_backlog、SOMAXCOON reference:socket与tcp连接过程

  • Tomcat 常用配置详解

    backlog/acceptCount 默认:100 半连接队列的最大值 AbstractEndpo...

  • listen 函数中参数 backlog

    我们该如何理解 listen 函数中的参数 backlog?如果 backlog 表示的是未完成连接队列的大小,那...

  • TCP的连接队列与backlog参数

    在Netty中经常会看到这样的代码: 这里有一个SO_BACKLOG参数,本篇文章解释一下这个参数的具体用途。 T...

  • How TCP backlog works in Linux

    何为 backlog 队列? backlog 队列的大小表示 server 的 监听描述符 所能够容纳的来自客户端...

  • iOS - HTTP、Socket、TCP的区别

    目录 TCP连接与HTTP连接的区别TCP连接与Socket连接的区别HTTP连接与Socket连接的区别什么时候...

  • socket

    Socket连接与HTTP连接的不同 通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信...

  • 第二篇:socket编程

    目录一、socket是什么?二、socket连接与HTTP连接的区别三、如何建立一个socket连接?四、使用OC...

  • 滴滴运维技术周刊 2017.04 第二周

    技术篇 最近接入层连接超时反馈比较普遍,连接超时的话题也围绕着backlog展开,backlog到底是什么?请看:...

网友评论

      本文标题:socket的连接队列backlog与tcp_abort_on_

      本文链接:https://www.haomeiwen.com/subject/megjsrtx.html