停用 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.MaxIdleConnsConnsPerport.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不會停用連線池。相反,它會停用活動連線的保持活動狀態,但連線仍然在連線池中進行管理。
其他注意事項:
以上是如何停用 Go 的 http.Client 連線池?的詳細內容。更多資訊請關注PHP中文網其他相關文章!