处理apache HTTP客户端保持活动连接断开,超时和DNS更改

时间:2015-07-24 03:25:50

标签: java sockets httpclient connection-pooling keep-alive

根据规范:http://tools.ietf.org/id/draft-thomson-hybi-http-timeout-01.html#rfc.section.5,我们可以在请求中包含Keep-Alive标头Connection:Keep-Alive; Keep-Alive:超时= 100并希望得到Keep-Alive的响应:timeout = 15,max = 100返回。如果没有Keep-Alive响应头,Http客户端默认默认保持连接更长,但是,您也可以使用自定义策略在自定义超时后关闭连接,因为我们没有获得连接:关闭,如此处所述{ {3}}和http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html

在我们的例子中,服务器既不返回keep-alive标头也不返回连接:close意味着请求可以保持活着一段时间。

Http客户端是否负责此类连接:来自同一重用连接的未来响应中的关闭案例以前未返回任何超时标头?当另一方在现有保持连接上断开连接或超时时会发生什么?它是否重新打开另一个连接或在同一连接上失败?处理这个问题的最佳方法是什么?

更新DNS条目时,是否有更好的方法来处理Keep-Alive连接?我确信Http Client理论上可以意识到这种变化。这也是一个非常常见的用例,因为您通常使用VIP / LB并在发布期间将底层服务器指向不同的colo。同样,在这种情况下,所有保持活动连接都将失败,因为来自一个colo的状态不会复制到另一个colo。是否有像IdleConnectionMonitor这样的钩子来检查?

默认情况下,Http客户端是否有更好的方法自动添加请求标头:" Keep-Alive"," timeout,max = 20"如果启用了Keep Alive,则基于套接字和连接超时设置?

我们正在使用httpcomponents httpclient 4.3.6。

0 个答案:

没有答案