ホームページ > バックエンド開発 > Golang > 新しい TCP 接続のために Go の http.Client で接続プーリングを無効にするにはどうすればよいですか?

新しい TCP 接続のために Go の http.Client で接続プーリングを無効にするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-07 17:17:03
オリジナル
922 人が閲覧しました

How can I Disable Connection Pooling in Go's http.Client for Fresh TCP Connections?

Go http.Client の接続プーリングをオフにする

テスト時に HTTP/1.x リクエストごとに新しい TCP 接続を実現するには、 Go の HTTP クライアントの接続プーリング メカニズムを無効にすることが不可欠です。これは、クライアントに関連付けられた HTTP トランスポートを変更することで実現できます。

1 つの方法は、トランスポート内で DisableKeepAlives を 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.Nano Second などの非常に短い期間に設定すると、アイドル状態の接続を確実に閉じるのにも役立ちます。すぐに。ただし、潜在的な競合状態を避けるために、このアプローチは慎重に使用する必要があります。

以上が新しい TCP 接続のために Go の http.Client で接続プーリングを無効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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