IBM MQ websphere - 创建一个额外的 TCP "ACK" 并等待 13 秒回答
IBM MQ websphere - creates an additional TCP "ACK" and waiting 13 sec for answer
我有两个具有相同 java 应用程序 ('clients') 的 Tomcat,它们与单个 MQ 服务器通信
在一台客户端上,通信速度很快,但在另一台上却需要很多时间(> 13 秒)。
在基础架构上,唯一的区别是 'slow client' 与服务器位于不同的域,而 'fast client' 位于同一域,这应该会造成任何麻烦,至于我知道。
我已经嗅探了 Wireshark 的两种通信方式,我发现了一个不同之处:MQ 服务器向慢速客户端发送了一个额外的 "ACK",没有收到任何信息,等待 13 秒,然后然后发送真正开始工作的"INITIAL DATA"数据包,像这样:
客户端 -> 服务器:IBM WebSphere SYN
服务器 -> 客户端:IBM WebSphere SYN-ACK
客户端 -> 服务器:IBM WebSphere ACK
客户端 -> 服务器:初始数据
服务器 -> 客户端:IBM WebSphere ACK // 仅在慢速客户端上!!!
// 等待 13 秒 - 仅在慢速客户端上。
Server -> client :INITIAL DATA // 从这里开始,它在两个客户端上流动
备注:
1) 与服务器的通信不是 SSL,而是使用 IP 地址而不是 DNS 名称,因此应该不会出现解析问题。
2) 我之前发表过类似的问题——这不是同一个案例!上次是 BIOS over TCP 问题。
我们用来解决问题的方法是使用 SimpleConnctionManager 和长时间超时。
这是一种变通方法,但确实有效。
我有两个具有相同 java 应用程序 ('clients') 的 Tomcat,它们与单个 MQ 服务器通信
在一台客户端上,通信速度很快,但在另一台上却需要很多时间(> 13 秒)。
在基础架构上,唯一的区别是 'slow client' 与服务器位于不同的域,而 'fast client' 位于同一域,这应该会造成任何麻烦,至于我知道。
我已经嗅探了 Wireshark 的两种通信方式,我发现了一个不同之处:MQ 服务器向慢速客户端发送了一个额外的 "ACK",没有收到任何信息,等待 13 秒,然后然后发送真正开始工作的"INITIAL DATA"数据包,像这样:
客户端 -> 服务器:IBM WebSphere SYN
服务器 -> 客户端:IBM WebSphere SYN-ACK
客户端 -> 服务器:IBM WebSphere ACK
客户端 -> 服务器:初始数据
服务器 -> 客户端:IBM WebSphere ACK // 仅在慢速客户端上!!!
// 等待 13 秒 - 仅在慢速客户端上。
Server -> client :INITIAL DATA // 从这里开始,它在两个客户端上流动
备注:
1) 与服务器的通信不是 SSL,而是使用 IP 地址而不是 DNS 名称,因此应该不会出现解析问题。
2) 我之前发表过类似的问题——这不是同一个案例!上次是 BIOS over TCP 问题。
我们用来解决问题的方法是使用 SimpleConnctionManager 和长时间超时。
这是一种变通方法,但确实有效。