环境:
虚拟机ubuntu:22.04 内核:5.15 64g内存 32核心
问题:Linux服务器收到SYN请求包没有回应ACK导致客户端无法建立TCP连接
项目是一个C/S架构,现在有一个TCP服务端程序放在一个docker里,60个TCP客户端程序放在60个个docker,所有ip互相之间都可以ping通
但今天发现固定的某些(客户端)连不上服务器,但有些客户端能连上,连不上的客户端先报错:timeout,加上我们写的代码的重连机制之timeout=20后进行重新connect,重连机制之后报错:operation already in process,就是上个发起连接tcp三次握手还没结束,因为timeout原因,开启下次connect,导致报错。所有的客户端能ping通服务器,
然后进行了小测试。服务器启动一个小脚本循环accept客户端连接,客户端采取telnet ip port发起tcp连接,发现之前能连上的还是能连上,连不上的经过tcpdump -i tcp抓包分析,客户端发出来syn包,服务端接收到了syn包,但是没有发出syn-ack包。这是为什么呢,是系统问题吗,看网上经验说有可能是什么tcp_timestamps和tcp_tw_recycle的问题,但是内核5.15已经弃用tcp_tw_recycle,也查不到时间戳有什么问题,请指教