美文网首页
java 网络建立连接失败

java 网络建立连接失败

作者: 扣鼻屎的猪 | 来源:发表于2017-09-25 13:43 被阅读39次

现象

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)。

相关文章

网友评论

      本文标题:java 网络建立连接失败

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