Go http.Client에 대한 연결 풀링 끄기
테스트 시 각 HTTP/1.x 요청에 대해 새로운 TCP 연결을 얻으려면, Go의 HTTP 클라이언트에서 연결 풀링 메커니즘을 비활성화하는 것은 필수적입니다. 이는 클라이언트와 연결된 HTTP 전송을 수정하여 수행할 수 있습니다.
한 가지 접근 방식은 전송 내에서 비활성화KeepAlives를 true로 설정하는 것입니다.
t := http.DefaultTransport.(*http.Transport).Clone() t.DisableKeepAlives = true c := &http.Client{Transport: t}
이 옵션은 연결 유지 연결을 명시적으로 비활성화합니다. 클라이언트가 각 요청에 대해 새로운 TCP 연결을 설정하도록 강제합니다. 그러나 요청에 Connection: close 헤더를 추가할 수 있습니다.
또는 MaxIdleConnsPerHost를 음수 값으로 설정하면 풀링이 효과적으로 비활성화됩니다.
t := http.DefaultTransport.(*http.Transport).Clone() t.MaxIdleConnsPerHost = -1 c := &http.Client{Transport: t}
이 옵션을 사용하면 전송에서 연결을 추가하지 않습니다. 풀에 연결하여 모든 요청에 대해 새 연결이 설정되도록 합니다.
기본 전송 구성을 유지하려면 이러한 설정을 저장할 새 전송을 생성하는 것이 좋습니다.
Dialer.KeepAlive를 -로 설정 1은 주로 활성 연결에 대한 연결 유지 동작을 제어하므로 풀링을 비활성화하지 않습니다. 일반적인 가정과 달리 이 옵션은 설정된 TCP 연결 수에 영향을 주지 않습니다.
마지막으로 IdleConnTimeout을 1 * time.Nanosecond와 같은 매우 짧은 기간으로 설정하면 유휴 연결이 닫히는 것을 확인하는 데 도움이 될 수도 있습니다. 즉시. 그러나 이 접근 방식은 잠재적인 경합 상황을 피하기 위해 주의해서 사용해야 합니다.
위 내용은 새로운 TCP 연결을 위해 Go의 http.Client에서 연결 풀링을 어떻게 비활성화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!