Limit czasu dla proxy Apache HttpClient 5, które zawiesza się podczas CONNECT
Ustaw limit czasu socket I/O menedżera połączeń dla nawiązywania tunelu, obok osobnego limitu czasu połączenia TCP.
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.
| Limit | Obsługiwane oczekiwanie |
|---|---|
| Limit czasu połączenia | Nawiązanie połączenia |
| Limit czasu gniazda | Domyślna bezczynność I/O, w tym wymiana CONNECT |
| Pobranie z puli / odpowiedź aplikacji | Inne 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ę.