>  기사  >  백엔드 개발  >  테스트 목적으로 Go의 HTTP 클라이언트에서 연결 풀링을 비활성화하려면 어떻게 해야 합니까?

테스트 목적으로 Go의 HTTP 클라이언트에서 연결 풀링을 비활성화하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-08 02:07:01133검색

How can I disable connection pooling in Go's HTTP clients for testing purposes?

Go HTTP 클라이언트에 대한 연결 풀링 비활성화

테스트 시나리오에서는 각 HTTP/에 대해 새로운 TCP 연결을 생성하기 위해 Go의 HTTP 클라이언트에서 연결 풀링을 비활성화해야 할 수도 있습니다. 1.x 요청. 이 가이드에서는 이를 달성하기 위한 다양한 접근 방식을 살펴봅니다.

http.Client에서 사용하는 기본 http.Transport는 연결 풀링을 활성화하지만 이는 불편할 수 있습니다. 풀링을 비활성화하려면 Transport.MaxIdleConnsPerHost를 음수 값으로 설정하거나 Transport.DisableKeepAlives를 true로 설정할 수 있습니다.

옵션 1: Keep-Alives 비활성화

Keep-alive는 일반적으로 지속적인 유지를 위해 사용됩니다. 하지만 Transport.DisableKeepAlives를 true로 설정하면 클라이언트는 각 요청 후에 연결을 강제로 닫습니다. 이 접근 방식은 "Connection: close" 요청 헤더를 추가하고 다음과 같이 설정할 수 있습니다.

t := http.DefaultTransport.(*http.Transport).Clone()
t.DisableKeepAlives = true
c := &http.Client{Transport: t}

옵션 2: MaxIdleConnsPerHost를 음수 값으로 설정

MaxIdleConnsPerHost, -1로 설정된 경우, 호스트당 유휴 연결 수를 0으로 제한합니다. 이렇게 하면 효과적으로 비활성화됩니다. pooling:

t := http.DefaultTransport.(*http.Transport).Clone()
t.MaxIdleConnsPerHost = -1
c := &http.Client{Transport: t}

옵션 3: Dialer Keep-Alive를 -1로 설정

Dialer.KeepAlive는 풀링을 비활성화하는 옵션처럼 보일 수 있지만 풀링 유지 기간만 설정합니다. 활성 연결. 풀링은 이 설정의 영향을 받지 않습니다.

기타 고려 사항

원하는 경우 위 옵션을 DialContext, TLSHandshakeTimeout, ResponseHeaderTimeout 및 ExpectContinueTimeout에 대한 사용자 정의 설정과 결합할 수 있습니다. http.Client.

풀링 제한은 당 활성 연결 수로 제한되지 않는다는 점에 유의하는 것이 중요합니다. 주인. 그러나 MaxIdleConnsPerHost 및DisableKeepAlives와 같은 옵션은 테스트 목적으로 풀링을 비활성화하는 효과적인 방법을 제공합니다.

위 내용은 테스트 목적으로 Go의 HTTP 클라이언트에서 연결 풀링을 비활성화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.