Go HTTP 커넥션 풀, 제대로 파헤쳐 보자!
by DD
4년 전
조회수 4
Go의 http.Transport를 분석하여 HTTP 커넥션 풀 관리 방법 설명
MaxIdleConnsPerHost 등, 커넥션 풀 효과적 사용을 위한 파라미터 조정 방법 제시
httptrace.ClientTrace를 활용, TLS Handshake 과정의 병목 현상 파악 및 해결
http.Transport 아키텍처 심층 분석
http.Client는 http.Transport를 통해 실제 HTTP 요청을 처리한다. 구체적으로 커넥션 풀은 Idle Connections 맵과 idleLRU 큐를 사용하여 관리된다. 따라서 MaxIdleConnsPerHost 설정을 통해 호스트별 유휴 커넥션 수를 제어하여 메모리 사용량을 최적화한다.
커넥션 풀 파라미터 튜닝 가이드
Go의 HTTP 커넥션 풀은 여러 파라미터를 통해 성능을 조절할 수 있다. MaxIdleConnsPerHost 값을 조정하여 트래픽 변화에 유연하게 대응할 수 있다. 반면, 과도한 값 설정은 커넥션 생성 지연을 유발하여 응답 시간 증가의 원인이 될 수 있으므로 주의해야 한다.
httptrace.ClientTrace를 활용한 성능 측정
httptrace.ClientTrace를 사용하여 HTTP 요청의 각 단계를 추적할 수 있다. 구체적으로 TLSHandshakeStart와 TLSHandshakeDone을 통해 TLS 핸드셰이크 시간을 측정한다. 따라서 병목 지점을 파악하고, DynamoDB 응답 시간을 개선하는 데 활용할 수 있다.
댓글 0
첫 번째 댓글을 남겨보세요!