CONNECT-Zeitüberschreitungen bei Proxys nach erfolgreicher TCP-Verbindung
Ermitteln Sie den während CONNECT aktiven Timeout, statt anzunehmen, dass eine abgeschlossene TCP-Verbindung auch den Tunnelaufbau beendet hat.
Ein TCP-Verbindungs-Timeout hat seine Aufgabe erfüllt, sobald der Client sich mit dem Proxy verbindet. Das nächste Warten—der Empfang einer vollständigen CONNECT-Antwort—kann von einem anderen Timer gesteuert werden.
Der Proxy verbindet sich möglicherweise noch upstream, tauscht Authentifizierungsnachrichten aus oder wartet auf einen anderen Dienst. Die gewöhnliche Antwort der Website hat noch nicht begonnen.
| Zuletzt abgeschlossener Schritt | Worauf wird noch gewartet? |
|---|---|
| TCP mit dem Proxy verbunden | Der Proxy-Handshake, einschließlich der CONNECT-Annahme |
| CONNECT angenommen | TLS zum Ziel, wenn das Ziel es nutzt |
| Zielanfrage gesendet | Die Antwort des Ziels |
Finden Sie den Timer, der aktiv ist, während der Connector diesen Handshake liest und schreibt. Eine Eigenschaft namens „response timeout“ wird möglicherweise erst nach dem Aufbau der Route wirksam. Bei HttpClient 5 sind ConnectionConfig und sein Socket-Timeout, die TLS-Handshake-Konfiguration und das Antwort-Timeout auf Anfrageebene zu unterscheiden. Wenden Sie die relevante Verbindungskonfiguration über den Manager an, den der tatsächliche Client verwendet. Ältere Apache-HttpClient-Generationen verwenden andere APIs, daher ist ein älteres Snippet keine verlässliche Karte dieser Zuständigkeiten.
Betrachten Sie eine endgültige CONNECT-Ablehnung weiterhin als Proxy-Antwort. Eine erfolgreiche Antwort, auf die ein TLS-Stillstand folgt, ist eine andere Fehlerphase. „TCP verbunden; keine vollständige CONNECT-Antwort vor der Aufbaufrist“ beschreibt das Problem genauer als ein allgemeines Proxy-Timeout.
Eine Gesamtfrist kann die Wartezeit des Aufrufers neben diesen Phasengrenzen begrenzen. Wenn sie abläuft, brechen Sie den Vorgang ab oder schließen Sie ihn über den vom Client unterstützten Lebenszyklus, bevor ein weiterer Versuch Verbindungskapazität verbraucht.