HttpClient 4.5花费两倍的时间关闭HTTP连接

时间:2019-01-08 09:57:44

标签: java apache apache-httpclient-4.x

我给了连接超时5000毫秒(5秒),但实际上需要10127毫秒(10.127秒)

如果connectiontimeout = 10000毫秒(10秒),则连接超时将花费20032毫秒(20秒)

下面是我尝试过的代码。

public static void getTest() 
{
     long start=0;

     try {

            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet("http://testing url");
            RequestConfig config=null;
             config = RequestConfig.custom()
                     .setConnectTimeout(5000)
                     .setConnectionRequestTimeout(5000)
                     .setSocketTimeout(5000)
                     .build();
             httpGet.setConfig(config);
             start = System.currentTimeMillis();
             httpClient.execute(httpGet);
    } catch (Exception e) {
        long end=System.currentTimeMillis();
        System.out.println("total time in Milliseconds:="+(end-start));
    }

}

1 个答案:

答案 0 :(得分:1)

原因是HTTP POST请求失败,它将自动重新发送到服务器。不成功的发布意味着,在这种情况下,服务器未发送有效的HTTP响应或发生了IOException,并且JVM中HTTP PostRetry的默认值为true。有一些预防性的方法可以防止无声HttpRetry,请参阅下表。

enter image description here

这是使确切超时时间加倍的主要原因。