ホームページ  >  記事  >  バックエンド開発  >  テスト目的で Go の HTTP クライアントで接続プーリングを無効にするにはどうすればよいですか?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 02:07:01133ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。