テスト目的で Go の HTTP クライアントで接続プーリングを無効にするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-08 02:07:01
オリジナル
204 人が閲覧しました

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

Go HTTP クライアントの接続プーリングを無効にする

テスト シナリオでは、各 HTTP/ に対して新しい TCP 接続を作成するために、Go の HTTP クライアントで接続プーリングを無効にする必要がある場合があります。 1.x リクエスト。このガイドでは、これを実現するためのさまざまなアプローチについて説明します。

http.Client によって使用されるデフォルトの http.Transport では、接続プーリングが有効になりますが、これは不便な場合があります。プーリングを無効にするには、Transport.MaxIdleConnsPerHost を負の値に設定するか、Transport.DisableKeepAlives を true に設定します。

オプション 1: キープアライブを無効にする

キープアライブは通常、永続的な維持に使用されます。ただし、Transport.DisableKeepAlives を true に設定すると、各リクエストの後にクライアントは強制的に接続を閉じます。この方法では、「Connection: close」リクエスト ヘッダーが追加され、次のように設定できます。

t := http.DefaultTransport.(*http.Transport).Clone()
t.DisableKeepAlives = true
c := &http.Client{Transport: t}
ログイン後にコピー

オプション 2: MaxIdleConnsPerHost を負の値に設定します

MaxIdleConnsPerHost (-1 に設定すると)ホストごとのアイドル接続の数を 0 に制限します。これにより、プーリングが効果的に無効になります:

t := http.DefaultTransport.(*http.Transport).Clone()
t.MaxIdleConnsPerHost = -1
c := &http.Client{Transport: t}
ログイン後にコピー

オプション 3: Dialer Keep-Alive を -1 に設定します

Dialer.KeepAlive はオプションのように見えるかもしれません。プーリングを無効にしますが、アクティブな接続のキープアライブ期間を設定するだけです。プーリングはこの設定の影響を受けません。

その他の考慮事項

必要に応じて、上記のオプションを、 http.Client.

プーリングの制限はホストごとのアクティブな接続の数に制限されないことに注意することが重要です。ただし、MaxIdleConnsPerHost や DisableKeepAlives などのオプションは、テスト目的でプーリングを無効にする効果的な方法を提供します。

以上がテスト目的で Go の HTTP クライアントで接続プーリングを無効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート