HTTP保持活动超时后,新的HTTP请求到达

HTTP保持活动超时后,新的HTTP请求到达,http,https,webserver,keep-alive,Http,Https,Webserver,Keep Alive,我们的应用程序是基于ExtJS 3.4的应用程序,我们经常在UI上遇到“通信失败”错误,我们的应用程序部署在不同的域上,但在某些域上,我们经常遇到这种情况 如果没有HTTP保持活动状态,则不会出现该错误。: 但是在不同的情况下,在1秒和5秒,我们经常会得到它 我们在Wireshark上观察到,由于RTT(往返时间)较高,请求花费的时间比预期的要多。 数据包流中存在不一致性。场景为: 如果保持活动状态为5秒: 当请求成功送达时,它将返回200 OK(成功响应)和5秒的超时参数(服务器尝试向客户端表

我们的应用程序是基于ExtJS 3.4的应用程序,我们经常在UI上遇到“通信失败”错误,我们的应用程序部署在不同的域上,但在某些域上,我们经常遇到这种情况

如果没有HTTP保持活动状态,则不会出现该错误。

但是在不同的情况下,在1秒和5秒,我们经常会得到它

我们在Wireshark上观察到,由于RTT(往返时间)较高,请求花费的时间比预期的要多。 数据包流中存在不一致性。场景为:

如果保持活动状态为5秒:

  • 当请求成功送达时,它将返回200 OK(成功响应)和5秒的超时参数(服务器尝试向客户端表示服务器将在关闭此连接之前等待5秒)

  • 现在,只要5秒的时间过去,服务器就发送一个FIN数据包(完成数据包,用于关闭连接,从服务器发送到客户端,在我们的例子中,客户端是浏览器)

  • 下面是ACK(确认数据包)从客户端到关闭连接所花费的时间是高的(高RTT)

  • 现在服务器已经启动关闭,但由于在连接关闭之前RTT较高,所以在服务器从客户端接收到完成确认之前,客户端发送一个新的HTTP请求(例如abc.do请求)

  • 由于该原因,服务器无法处理该请求,因为它已启动连接关闭

  • 将1秒设置为“保持活动”意味着我们减少了服务器等待关闭连接的时间,因为我们希望1秒后关闭一个连接,并为新请求设置新连接,以避免5秒后出现不必要的请求

    提前谢谢 这是我的第一篇文章,如果需要请纠正我。 对不起,英语不好:)

    通信故障图像:


    我们通过同步浏览器超时和服务器超时解决了这个问题


    修复方法是确保TCP keepalive时间和浏览器重合或同时出现,从而导致TCP连接完全断开

    我们通过同步浏览器超时和服务器超时解决了这个问题


    修复方法是确保TCP keepalive时间和浏览器重合或同时出现,从而导致TCP连接完全断开

    需要TCP专家的帮助,他们可以告诉我们此不一致的原因。我们通过同步浏览器超时和服务器超时解决了此问题。需要TCP专家的帮助,他们可以告诉我们此不一致的原因。我们通过同步浏览器超时和服务器超时解决了此问题。