Proxy zaakceptowało TCP, ale nigdy nie dokończyło odpowiedzi CONNECT. Odpowiedź witryny jeszcze się nie rozpoczęła; limit czasu skierowany tylko na tę późniejszą odpowiedź może pozostawić to nawiązanie w nieskończonym oczekiwaniu.

W Apache HttpClient 5.3.1 ustaw domyślne wartości menedżera połączeń:

var connection = ConnectionConfig.custom()
    .setConnectTimeout(Timeout.ofSeconds(5))
    .setSocketTimeout(Timeout.ofSeconds(10))
    .build();

var manager = PoolingHttpClientConnectionManagerBuilder.create()
    .setDefaultConnectionConfig(connection)
    .build();

var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("http", "proxy.example", 8080))
    .build();

Użyj klas Apache HttpComponents 5 w org.apache.hc, z Timeout w pakiecie pomocniczym core5. Zachowaj klienta do jego pracy i zamknij go. W izolowanym publicznym teście HTTP kandydat z listy proxy HTTP zapewnia punkt końcowy; utrzymuj stały cel podczas porównywania limitów czasu.

LimitObsługiwane oczekiwanie
Limit czasu połączeniaNawiązanie połączenia
Limit czasu gniazdaDomyślna bezczynność I/O, w tym wymiana CONNECT
Pobranie z puli / odpowiedź aplikacjiInne osobno skonfigurowane etapy

Po CONNECT TLS może wymagać własnego limitu nawiązania przez konfigurację TLS HttpClient 5. Rozróżnij też bezczynność od całkowitego terminu: przerywane bajty lub powtarzane wymiany uwierzytelniania mogą wydłużyć łączny czas. Użyj obsługiwanej przez aplikację polityki terminu lub anulowania dla jednego budżetu na całą operację.

Powiązane artykuły