피드로 돌아가기
HTTP/2 Multiplexing: Why One Connection Is Enough
Dev.toDev.to
Backend

HTTP/2 Multiplexing 도입을 통한 TCP Handshake 오버헤드 제거 및 지연 시간 최적화

HTTP/2 Multiplexing: Why One Connection Is Enough

Dylan Dumont2026년 4월 22일4intermediate

Context

매 요청마다 새로운 TCP Connection을 생성함에 따른 Three-way Handshake 지연 시간 발생. HTTP/1.1의 순차적 요청 처리 방식이 야기하는 Head-of-Line Blocking 현상으로 인한 고동시성 시스템의 처리 성능 저하.

Technical Solution

  • ForceAttemptHTTP2 설정을 통한 HTTP/2 프로토콜 강제 적용 및 TCP Connection 재사용 구조 설계
  • Multiplexing 기술을 통한 단일 Connection 내 다수 Request/Response 병렬 전송 및 큐잉 지연 제거
  • HPACK 압축 포맷 적용으로 중복 Header 전송량을 최소화하여 네트워크 대역폭 및 CPU 오버헤드 절감
  • MaxIdleConnsPerHost 최적화를 통한 Idle Connection 유지 및 Cold Start 시의 연결 설정 비용 분산
  • Stream 단위 에러 핸들링 설계를 통한 개별 요청 실패 시 Connection 전체의 영향을 방지하는 가용성 확보
  • GOAWAY 프레임 처리 로직 구현으로 서버의 Graceful Shutdown 시 데이터 손실 방지 및 자원 회수

1. Go http.Transport 설정 시 ForceAttemptHTTP2 활성화 여부 검토

2. 서비스 트래픽 패턴에 따른 MaxIdleConnsPerHost 및 IdleConnTimeout 수치 튜닝

3. 단일 연결 장애가 전체 스트림에 미치는 영향을 분석하여 Stream-level 에러 처리 로직 구현

4. 대규모 헤더 전송이 빈번한 API의 경우 HPACK 적용 효율성 측정

원문 읽기