Java Netscaler:突然确认,RST数据包
我们的一个客户使用Netscaler作为Fuse服务器和Tomcat托管软件之间的平衡中间件。 目前,我们在软件和netscaler之间遇到了奇怪的通信行为(我们使用SpringWS发出SOAP请求):一段时间后,由于向netscaler发出请求并等待响应,netscaler将ACK、RST数据包发送到我们的服务器,因此Java抛出“连接重置”IOException。 tcp转储如下所示: 根据netscaler文档,重置数据包的Java Netscaler:突然确认,RST数据包,java,networking,tcp,connection-reset,Java,Networking,Tcp,Connection Reset,我们的一个客户使用Netscaler作为Fuse服务器和Tomcat托管软件之间的平衡中间件。 目前,我们在软件和netscaler之间遇到了奇怪的通信行为(我们使用SpringWS发出SOAP请求):一段时间后,由于向netscaler发出请求并等待响应,netscaler将ACK、RST数据包发送到我们的服务器,因此Java抛出“连接重置”IOException。 tcp转储如下所示: 根据netscaler文档,重置数据包的Win字段包含错误代码,在这种情况下为9300,表示“清除空闲连
Win
字段包含错误代码,在这种情况下为9300
,表示“清除空闲连接”,这反过来意味着netscaler运行“僵尸”进程,清除空闲连接,并且该进程已将我们的连接识别为空闲连接
在这种情况下,为什么netscaler会将连接视为空闲连接
更新
以下是更完整的通信日志:
服务器和重置数据包之间的时间差是多少?您可以在netscaler vserver上为处于空闲状态的客户端调整空闲超时值,在服务上为需要较长时间响应的服务器调整空闲超时值 好的,这就是我读到的和听到的:
keepalive
数据包(探测)并在发送多个数据包且未收到另一方的响应后采取行动有一个终止挂起连接的设置,出现这个问题主要是因为缺乏知识(请参阅我的答案)