Jetty 不会删除关闭的套接字 -> 具有相同端口的连接失败

问题描述

我们的 Jetty 服务器面临一个问题,即连接建立期间的 SYN 包不会被 Jetty 确认。我们可以缩小范围,这只发生在 SYN 包中,这些包通过客户端端口传输,以前用于另一个连接到 Jetty。 正如我在日志中看到的,之前的连接被关闭,客户端和服务器提交了 FIN ACK。 重要的是:并非所有带有“已使用”端口的连接都会被忽略,但大多数会被忽略。当通过使用的端口传输时,服务器会确认 SYN 包的实例。但是,我无法确定这些情况之间有什么区别。

我目前的假设是 Sockets 没有正确关闭,并且在这个混乱中的一些相关方将忽略或基本上拒绝连接,因为他们仍然看到关闭的 socket。

在它不起作用的情况下,Jetty 的调试日志中几乎没有任何内容。在我的 Wireshark 跟踪中,我可以看到,SYN 包被重传了 2 次(总共 3 次),然后客户端声明 408(超时)。

我们使用 码头:v9.4.38, Java:Oracle JRE 版本 1.8.0.202, Javax Servlet:v3.1.0

有没有人有想法或类似的情况? ACK 是由 Jetty 传输还是由某些标准 Java 实现传输?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)