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ų.

RibaSprendžiamas laukimas
Ryšio laiko limitasRyšio užmezgimas
Socket laiko limitasNumatytasis I/O neveiklumas, įskaitant CONNECT mainus
Gavimas iš telkinio / programos atsakymasKiti 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.

Susiję straipsniai