Timeout per un proxy Apache HttpClient 5 che si blocca durante CONNECT
Imposta il timeout di socket I/O del gestore connessioni per l'instaurazione del tunnel, insieme al timeout di connessione TCP separato.
Il proxy ha accettato TCP ma non ha mai completato la risposta CONNECT. La risposta del sito non è ancora iniziata; un timeout rivolto solo a quella risposta successiva può lasciare questa configurazione in attesa senza limiti.
Per Apache HttpClient 5.3.1, imposta i valori predefiniti del gestore connessioni:
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();Usa le classi di Apache HttpComponents 5 sotto org.apache.hc, con Timeout nel pacchetto di utilità core5. Conserva il client per il suo lavoro e chiudilo. Per un test HTTP pubblico isolato, un candidato dalla lista di proxy HTTP fornisce l'endpoint; mantieni stabile la destinazione quando confronti i timeout.
| Limite | Attesa coperta |
|---|---|
| Timeout di connessione | Instaurazione della connessione |
| Timeout del socket | Inattività I/O predefinita, incluso lo scambio CONNECT |
| Acquisizione dal pool / risposta dell'applicazione | Altre fasi configurate separatamente |
Dopo CONNECT, TLS può richiedere un proprio limite di instaurazione tramite la configurazione TLS di HttpClient 5. Distingui anche l'inattività da una scadenza complessiva: byte intermittenti o scambi di autenticazione ripetuti possono allungare il tempo totale. Usa la politica di scadenza o annullamento supportata dall'applicazione per un budget per l'intera operazione.