簡體   English   中英

Http 2 次請求后客戶端超時

[英]Http Client Timeout after 2 requests

我正在經歷一些我無法解釋的奇怪行為。 對於我的用例,我使用 awaitility 和 httpRequests 來檢查服務是否已經部署。 如果服務尚未准備好,OpenShift 返回 503,否則返回 200。 在 2 個請求(收到 503)之后,正常行為變成超時。 大約 2 分鍾后,手動請求仍會收到 503 和 200。

22-05-2020 11:56:33.448 INFO RetryingHttpClient.send[32] - 發送請求:GET https://serviceurl HTTP/1.1

22-05-2020 11:56:33.646 信息 RetryingHttpClient.send[34] - 接收 503

22-05-2020 11:56:43.987 INFO RetryingHttpClient.send[32] - 發送請求:GET https://serviceurl HTTP/1.1

22-05-2020 11:56:43.992 信息 RetryingHttpClient.send[34] - 接收 503

22-05-2020 11:56:54.071 INFO RetryingHttpClient.send[32] - 發送請求:GET https://serviceurl HTTP/1.1

--> 超時

public void send(HttpUriRequest request) {
    log.info("Sending request (retry for 10m): {}", request);
    await().atMost(10, TimeUnit.MINUTES)
            .pollInterval(5, TimeUnit.SECONDS)
            .ignoreExceptions()
            .until(() -> client.execute(request), ResponseChecker::is2xxOrRedirectResponse);
}

為了消除一些潛在的原因,我用一個簡單的 for 循環、睡眠和擴展日志重寫了邏輯,並使用了一些可以從任何地方訪問的外部 url。

public void send(HttpUriRequest request) {

    for(int i=1;60>=i;i++){
        try {
            log.info("Sending request: {}", request);
                HttpResponse res = client.execute(request);
                log.info("Receiving {}", res.getStatusLine().getStatusCode());
                try{
                    Thread.sleep(10000);
                }catch(InterruptedException edf){
                    System.out.println("Thread was interrupted!");
                }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

22-05-2020 14:56:33.448 INFO RetryingHttpClient.send[32] - 發送請求:GET https://www.google.de HTTP/1.1

22-05-2020 14:56:33.686 信息 RetryingHttpClient.send[34] - 接收 200

22-05-2020 14:56:43.687 INFO RetryingHttpClient.send[32] - 發送請求:GET https://www.google.de HTTP/1.1

22-05-2020 14:56:43.770 信息 RetryingHttpClient.send[34] - 接收 200

22-05-2020 14:56:53.771 INFO RetryingHttpClient.send[32] - 發送請求:GET https://www.google.de HTTP/1.1

--> 超時

如果您有任何想法,潛在的原因可能是什么,我會非常高興。 謝謝。

您的代碼正在泄漏連接。 關閉響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM