首頁 >後端開發 >Golang >如何在 Go 的 HTTP 用戶端中停用連線池以進行測試?

如何在 Go 的 HTTP 用戶端中停用連線池以進行測試?

Patricia Arquette
Patricia Arquette原創
2024-11-08 02:07:01245瀏覽

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

停用Go HTTP 用戶端的連線池

在測試場景中,可能需要停用Go 的HTTP 用戶端中的連線池來為每個HTTP/ 建立新的TCP 連線1.x 請求。本指南探討了實現此目的的各種方法。

http.Client 使用的預設 http.Transport 啟用連線池,這可能會很不方便。若要停用池化,可以將 Transport.MaxIdleConnsPerHost 設為負值或將 Transport.DisableKeepAlives 設為 true。

選項 1:停用 Keep-Alives

Keep-alives 通常用於維護持久性連接,但將 Transport.DisableKeepAlives 設為 true 會強制客戶端在每次請求後關閉連接。這種方法增加了一個「Connection: close」請求頭,可以設定如下:

選項2:將MaxIdleConnsPerHost 設定為負值

MaxIdleConnsPerHost,設定為-1 時,將每個主機的空閒連線數限制為0。這有效地禁用了pooling:

選項3:將Dialer Keep-Alive 設定為-1

Dialer.KeepAlive 可能看起來像是停用池的選項,但它僅設定保持活動期限活躍的連線。池化不受此設定的影響。

其他注意事項

如果需要,您可以將上述選項與使用的 Transport 物件中的 DialContext、TLSHandshakeTimeout、ResponseHeaderTimeout 和 ExpectContinueTimeout 的自訂設定結合。 http.Client.

需要注意的是,池化限制並不限於活動的數量每個主機的連線數。但是,MaxIdleConnsPerHost 和 DisableKeepAlives 等選項提供了出於測試目的而停用池的有效方法。

以上是如何在 Go 的 HTTP 用戶端中停用連線池以進行測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn