Délai d'expiration pour un proxy Apache HttpClient 5 qui se bloque pendant CONNECT
Définissez le délai d'expiration d'E/S de socket du gestionnaire de connexions pour l'établissement du tunnel, en plus du délai de connexion TCP distinct.
Le proxy a accepté TCP mais n'a jamais terminé la réponse CONNECT. La réponse du site n'a pas encore commencé ; un délai qui ne viserait que cette réponse ultérieure peut laisser cette mise en place attendre indéfiniment.
Pour Apache HttpClient 5.3.1, définissez les valeurs par défaut du gestionnaire de connexions :
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();Utilisez les classes Apache HttpComponents 5 sous org.apache.hc, avec Timeout dans le paquet utilitaire core5. Conservez le client pour son travail et fermez-le. Pour un test HTTP public isolé, un candidat de la liste de proxys HTTP fournit le point de terminaison ; gardez la destination stable lors de la comparaison des délais.
| Limite | Attente traitée |
|---|---|
| Délai de connexion | Établissement de la connexion |
| Délai de socket | Inactivité d'E/S par défaut, y compris l'échange CONNECT |
| Acquisition dans le pool / réponse de l'application | Autres étapes configurées séparément |
Après CONNECT, TLS peut nécessiter sa propre limite d'établissement via la configuration TLS d'HttpClient 5. Distinguez aussi l'inactivité d'une échéance globale : des octets intermittents ou des échanges d'authentification répétés peuvent allonger le temps total. Utilisez la politique d'échéance ou d'annulation prise en charge par l'application pour un budget pour l'opération entière.