Проксі прыняў TCP, але так і не завяршыў адказ CONNECT. Адказ сайта яшчэ не пачаўся; тайм-аўт, накіраваны толькі на гэты пазнейшы адказ, можа пакінуць такое ўсталяванне ў бясконцым чаканні.

Для Apache HttpClient 5.3.1 задайце значэнні па змаўчанні мэнэджара злучэнняў:

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();

Выкарыстоўвайце класы Apache HttpComponents 5 у org.apache.hc, а Timeout — у службовым пакеце core5. Трымайце кліент для яго працы і зачыняйце яго. Для ізаляванага публічнага HTTP-тэсту кандыдат з спісу HTTP-проксі забяспечвае канчатковы пункт; трымайце прызначэнне нязменным пры параўнанні тайм-аўтаў.

МяжаЯкое чаканне пакрываецца
Тайм-аўт злучэнняУсталяванне злучэння
Тайм-аўт сокетаБяздзейнасць I/O па змаўчанні, уключаючы абмен CONNECT
Атрыманне з пула / адказ праграмыІншыя асобна наладжаныя этапы

Пасля CONNECT TLS можа патрабаваць уласнай мяжы ўсталявання праз канфігурацыю TLS у HttpClient 5. Таксама адрознівайце бяздзейнасць ад агульнага дэдлайна: перарывістыя байты або паўторныя абмены аўтэнтыфікацыі могуць падоўжыць агульны час. Выкарыстоўвайце падтрымліваную праграмай палітыку дэдлайна або скасавання для аднаго бюджэту ўсёй аперацыі.

Падобныя артыкулы