주황 칸, 응답 헤더 대기의 30초가 여기서 가장 짧은 상한이다 요청 전체를 재는 타이머 ctx deadline호출자가 건 1시간 http.Client.Timeout설정 안 함 = 무제한 구간마다 따로 재는 Transport 타이머 TCP 연결3sDialer.Timeout TLS 핸드셰이크5sTLSHandshakeTimeout 요청 전송없음 응답 헤더 대기30sResponseHeaderTimeout body 읽기없음 가장 먼저 만료되는 하나가 요청을 끊는다 ctx에 59분 30초가 남아도 30초짜리가 먼저 끊는다 Go · 실전 · 트러블슈팅Go ResponseHeaderTimeout1시간 타임아웃이 30초에 끊긴 이유context.WithTimeout으로 1시간을 걸면 그 요청은 1시간까지 기다린다고 생각했다. 그런데 30초에 죽었다. context는 끝까지 갔다. 다만 그게 유일한 타이머가 아니었다. 그리고 타이머를 고치고 나니, 진짜 문제는 따로 있었다.2026.09.07