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