tcptrack显示SYN_SENT连接,这是否意味着SYN包到达服务器?

我们的服务器遭遇了严重的连接超时问题,所以我们用tcptrack跟踪tcp连接

我们发现,如果客户端开始连接到服务器,tcptrack会显示连接,但是在SYN_SENT状态下, netstat -nat什么也不显示。 (tcptrack&netstat全部在服务器上运行)

  1. 这是否意味着syn请求到达服务器? 没有syn / ack被发回?
  2. 为什么tcptrack可以报告这个连接,但netstat不能?
  3. 可能是一个普通的Apache无法build立与客户端的连接的问题?

我做了一个使用ab在同一个内部网,到指定的网卡,它处理了10000个并发连接和400000个请求确定的长凳testing

ps:这不是每次都会发生,但确实发生了很多

PPS:有没有什么好的工具来跟踪tcp连接丢失的地方?

这意味着SYN是由客户端发送的,或者没有到达服务器,服务器没有回复,或者服务器select回复而不跟踪它。 服务器不需要跟踪它发送的每个SYN应答(并且可以使用SYN cookie ),因为它们可能被欺骗,并且这样做会造成拒绝服务攻击的风险。

当我收到'不想要的'stream量时,就像在被IPTABLES规则明确阻塞的stream量(如DROPPOP)中一样,tcptrack显示input的IP地址以及SYN_SENT状态(连同连接时间和数据速率0B /秒)。 该清单在那里停留几秒钟,直到它清除。

所以 – 有可能因为某些原因,你所看到的连接被阻塞。 由于IPTABLES DROPs,可以locking由SYN_SENT提供的IP地址。 你可以禁用IPTABLES一下,看看它是否继续。 如果是这样,请确保被阻止的地址应该是。