java 网络建立连接失败

现象

client 建立连接 三次握手已经完成,但server 的selector没有响应这个连接。

正常的三次TCP 三次握手

  • client ---syn指令---> server
  • server ---sync+ack--- client
  • client --- ack 指令 ---> server

命令

   ss -l
   netstat -s | egrep "listen|LISTEN" 
全链接队列溢出的次数

分析

全链接队列已满,导致客户端发送ack命令后,已将队列修改为establish,但server由于accept队列已满,抛弃了ack包,server没有触发链接建立事件。

半连接队列和全连接队列

来源: http://www.cnxct.com/something-about-phpfpm-s-backlog

全链接队列的大小:

min(backlog, somaxconn) . backlog是在socket创建的时候传入的,somaxconn是一个os级别的系统参数

半链接队列的大小:

半连接队列的大小取决于:max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容