简单来说,在 dble 初始化后端连接池的过程中,瞬时创建的连接数量可能过大,导致部分 TCP 连接握手时触发了 TCP 的 syn_cookie 机制并且第三次 TCP 握手的 ACK 报文丢失了,从而导致了上述的情况。
同时该过程确定了两者传输的“windows滑动窗口”大小,如下图所示:接收方只能收2个数据包,所以会发送“ACK3 Window size=2”把发送方发送的“Window size =3 send 3”丢弃掉。
控制位:ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1RST:该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接SYN:该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。