Timp limită pentru un proxy Apache HttpClient 5 care se blochează în timpul CONNECT
Setați timpul limită socket I/O al managerului de conexiuni pentru stabilirea tunelului, împreună cu timpul limită TCP de conectare separat.
Proxy-ul a acceptat TCP dar nu a finalizat niciodată răspunsul CONNECT. Răspunsul site-ului nu a început încă; un timp limită îndreptat doar spre acel răspuns ulterior poate lăsa această configurare să aștepte nemărginit.
Pentru Apache HttpClient 5.3.1, setați valorile implicite ale managerului de conexiuni:
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();Folosiți clasele Apache HttpComponents 5 sub org.apache.hc, cu Timeout în pachetul utilitar core5. Păstrați clientul pentru munca lui și închideți-l. Pentru un test HTTP public izolat, un candidat din lista de proxy-uri HTTP furnizează punctul final; mențineți destinația stabilă când comparați timpii limită.
| Limită | Așteptarea acoperită |
|---|---|
| Timp limită de conectare | Stabilirea conexiunii |
| Timp limită socket | Inactivitate I/O implicită, inclusiv schimbul CONNECT |
| Obținere din pool / răspunsul aplicației | Alte etape configurate separat |
După CONNECT, TLS poate avea nevoie de propria limită de stabilire prin configurația TLS a HttpClient 5. De asemenea, distingeți inactivitatea de un termen total: octeții intermitenți sau schimburile repetate de autentificare pot prelungi timpul total. Folosiți politica de termen sau anulare acceptată de aplicație pentru un buget pentru întreaga operațiune.