ホームページ > バックエンド開発 > Golang > Go の http.Client の接続プーリングを無効にする方法は?

Go の http.Client の接続プーリングを無効にする方法は?

DDD
リリース: 2024-11-08 16:01:02
オリジナル
447 人が閲覧しました

How to Disable Connection Pooling for Go's http.Client?

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

Go では、net/http.Client が HTTP サーバーへの接続を管理します。デフォルトでは、接続プーリングを使用して、既存の接続を再利用することでパフォーマンスを向上させます。ただし、テスト目的または特定の使用例では、接続プーリングを無効にする必要がある場合があります。

http.Client の接続プーリングを無効にするには、Transport.DisableKeepAlives を設定するか、Transport.MaxIdleConnsPerHost を設定するという 2 つの方法を使用できます。 to -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}
    // ...
}
ログイン後にコピー

Using Transport.MaxIdleConnsPerHost

Transport.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 に設定しても、接続プーリングは無効になりません。代わりに、アクティブな接続のキープアライブが無効になりますが、接続は引き続き接続プールで管理されます。

追加の考慮事項:

  • 接続プーリングを無効にすると、接続の負荷が軽減される可能性があります。リクエストごとに新しい接続を確立する必要があるため、パフォーマンスが向上します。
  • http.Client のデフォルトのトランスポートは、TLS を使用して接続を暗号化します。接続プーリングを無効にすると、TLS セッションの再開とパフォーマンスに影響を与える可能性があります。

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

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