TCP 연결 타임아웃은 클라이언트가 프록시에 연결되는 순간 제 역할을 마쳤습니다. 그다음 기다림—완전한 CONNECT 응답 수신—은 다른 타이머가 관장할 수 있습니다.

프록시가 아직 업스트림에 연결 중이거나 인증 메시지를 교환 중이거나 다른 서비스를 기다리고 있을 수 있습니다. 웹사이트의 일반 응답은 아직 시작되지 않았습니다.

마지막으로 완료된 단계아직 무엇을 기다리는가?
프록시에 TCP 연결됨CONNECT 수락을 포함한 프록시 핸드셰이크
CONNECT 수락됨대상이 사용하는 경우 목적지 TLS
목적지 요청 전송됨목적지의 응답

커넥터가 그 핸드셰이크를 읽고 쓰는 동안 활성화된 타이머를 찾으세요. “response timeout”이라는 속성은 경로가 설정된 뒤에야 효력을 발휘할 수 있습니다. HttpClient 5에서는 ConnectionConfig와 그 소켓 타임아웃, TLS 핸드셰이크 구성, 요청 수준의 응답 타임아웃을 구분하세요. 관련 연결 구성을 실제 클라이언트가 사용하는 관리자를 통해 적용하세요. 오래된 Apache HttpClient 세대는 다른 API를 사용하므로, 오래된 스니펫은 이런 책임들의 신뢰할 만한 지도가 아닙니다.

최종 CONNECT 거부는 프록시의 응답으로 유지하세요. 성공 응답 뒤에 TLS가 멈추는 것은 또 다른 실패 단계입니다. “TCP 연결됨; 설정 기한 전에 완전한 CONNECT 응답 없음”이라는 표현이 일반적인 프록시 타임아웃보다 문제를 더 정확히 설명합니다.

전체 기한은 이런 단계별 한도와 함께 호출자의 대기를 제한할 수 있습니다. 기한이 만료되면 다음 시도가 연결 용량을 소비하기 전에 클라이언트가 지원하는 수명 주기를 통해 작업을 취소하거나 닫으세요.

관련 글