>백엔드 개발 >Golang >Go의 http.Client에 대한 연결 풀링을 어떻게 비활성화할 수 있나요?

Go의 http.Client에 대한 연결 풀링을 어떻게 비활성화할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-06 22:25:02557검색

How can I disable connection pooling for Go's http.Client?

Go http.Client에 대한 연결 풀링 끄기

Go의 http.Client에 대한 연결 풀링을 비활성화하려면 해당 전송 설정을 수정할 수 있습니다. 두 가지 주요 접근 방식이 있습니다.

접근 방법 1: 비활성화KeepAlive

Transport.DisableKeepAlives를 true로 설정하면 전송에서 기존 연결을 재사용하지 못하게 됩니다. 그러나 이로 인해 요청에 Connection: close 헤더가 추가될 수 있으며 이는 모든 테스트 시나리오에서 바람직하지 않을 수 있습니다.

접근 방식 2: MaxIdleConnsPerHost 설정

Transport.MaxIdleConnsPerHost를 -1과 같은 음수 값으로 설정하면 연결 풀링도 효과적으로 비활성화됩니다. 비활성화KeepAlives와 달리 이 접근 방식은 요청 헤더에 영향을 미치지 않습니다.

샘플 코드

다음은 비활성화KeepAlive를 사용하여 연결 풀링을 비활성화하는 예입니다.

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

다음은 MaxIdleConnsPerHost를 사용하는 예입니다.

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

Dialer.KeepAlive를 -1로 설정해도 연결 풀링이 비활성화되지 않는다는 점에 유의하는 것이 중요합니다. 이 설정은 활성 연결의 연결 유지 동작에만 영향을 미치며 새 연결 생성에는 영향을 미치지 않습니다.

위 내용은 Go의 http.Client에 대한 연결 풀링을 어떻게 비활성화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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