>백엔드 개발 >Golang >Go의 http.Client에 대한 연결 풀링을 비활성화하는 방법은 무엇입니까?

Go의 http.Client에 대한 연결 풀링을 비활성화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-08 16:01:02417검색

How to Disable Connection Pooling for Go's http.Client?

Go http.Client에 대한 연결 풀링 비활성화

Go에서는 net/http.Client가 HTTP 서버에 대한 연결을 관리합니다. 기본적으로 연결 풀링을 사용하여 기존 연결을 재사용하여 성능을 향상시킵니다. 그러나 테스트 목적이나 특정 사용 사례의 경우 연결 풀링을 비활성화해야 할 수도 있습니다.

http.Client에 대한 연결 풀링을 비활성화하려면 Transport.DisableKeepAlives 설정 또는 Transport.MaxIdleConnsPerHost 설정이라는 두 가지 방법을 사용할 수 있습니다. -1로.

사용 Transport.DisableKeepAlives

Transport.DisableKeepAlives 필드는 전송이 요청에 대해 연결 유지를 비활성화할지 여부를 제어합니다. true로 설정하면 요청 사이에 연결이 열린 상태로 유지되는 것을 방지할 수 있습니다. 연결 유지를 비활성화하려는 경우 이 방법을 권장합니다.

연결 유지를 비활성화하려면 다음 코드를 사용하세요.

import (
    "net/http"
    "time"
)

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

Transport.MaxIdleConnsPerHost 사용

Transport.MaxIdleConnsPerHost 필드는 당 최대 유휴 연결 수를 제어합니다. 주인. -1로 설정하면 연결이 유휴 상태로 유지되는 것을 방지하여 연결 풀이 비활성화됩니다.

이 방법을 사용하여 연결 풀링을 비활성화하려면 다음 코드를 사용하십시오.

import (
    "net/http"
    "time"
)

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

참고 :

Dialer.KeepAlive를 -1로 설정해도 연결 풀링이 비활성화되지 않습니다. 대신 활성 연결에 대한 연결 유지를 비활성화하지만 연결은 여전히 ​​연결 풀에서 관리됩니다.

추가 고려 사항:

  • 연결 풀링을 비활성화하면 연결 풀링을 비활성화할 수 있습니다. 각 요청에 대해 새 연결을 설정해야 하기 때문에 성능이 향상됩니다.
  • http.Client의 기본 전송은 TLS를 사용하여 연결을 암호화합니다. 연결 풀링을 비활성화하면 TLS 세션 재개 및 성능에 영향을 미칠 수 있습니다.

위 내용은 Go의 http.Client에 대한 연결 풀링을 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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