Apache HttpClient 5 tarpinio serverio, kuris užstringa per CONNECT, laiko limitas
Nustatykite ryšių tvarkyklės socket I/O laiko limitą tunelio nustatymui kartu su atskiru TCP ryšio laiko limitu.
Tarpinis serveris priėmė TCP, bet niekada nebaigė CONNECT atsakymo. Svetainės atsakymas dar neprasidėjo; laiko limitas, skirtas tik tam vėlesniam atsakymui, gali palikti šį nustatymą laukti neribotai.
Apache HttpClient 5.3.1 atveju nustatykite ryšių tvarkyklės numatytąsias reikšmes:
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();Naudokite Apache HttpComponents 5 klases, esančias po org.apache.hc, su Timeout pagalbiniame pakete core5. Išsaugokite klientą jo darbui ir uždarykite jį. Izoliuotam viešam HTTP testui kandidatas iš HTTP tarpinių serverių sąrašo suteikia galinį tašką; lygindami laiko limitus išlaikykite tikslą pastovų.
| Riba | Sprendžiamas laukimas |
|---|---|
| Ryšio laiko limitas | Ryšio užmezgimas |
| Socket laiko limitas | Numatytasis I/O neveiklumas, įskaitant CONNECT mainus |
| Gavimas iš telkinio / programos atsakymas | Kiti atskirai sukonfigūruoti etapai |
Po CONNECT TLS gali reikėti savo nustatymo ribos per HttpClient 5 TLS konfigūraciją. Taip pat atskirkite neveiklumą nuo bendro termino: pertraukiami baitai arba pasikartojantys autentifikavimo mainai gali prailginti bendrą laiką. Naudokite programos palaikomą termino arba atšaukimo politiką, skirtą vienam visos operacijos biudžetui.