方案如下:
如何处理这种竞争条件: - 所有连接关闭应该由代理启动,而不是由后端服务器启动? - 代理应该在因连接关闭而无法发送时重试请求吗?
答案 0 :(得分:1)
代理只是通过流量。如果服务器已关闭连接,则代理也应立即关闭它,即使有待处理的请求也是如此。 但是,从客户端站点,所描述的情况看起来像服务器还没有返回请求的任何数据。这应该通过“保持活着”来防止。握手。
在HTTP协议中标题"连接:"用于这种情况。客户包括"连接:Keep-Alive"如果他想在处理请求后保持TCP会话打开(这样就可以在同一个TCP会话中发送下一个HTTP请求)。服务器仍然可以回复"连接:关闭"标题,这意味着无论如何都会关闭TCP会话。