Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melumpuhkan Penggabungan Sambungan untuk http.Client Go?

Bagaimana untuk Melumpuhkan Penggabungan Sambungan untuk http.Client Go?

DDD
DDDasal
2024-11-08 16:01:02471semak imbas

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

Melumpuhkan Pengumpulan Sambungan untuk Go http.Client

Dalam Go, net/http.Client menguruskan sambungan ke pelayan HTTP. Secara lalai, ia menggunakan pengumpulan sambungan untuk meningkatkan prestasi dengan menggunakan semula sambungan sedia ada. Walau bagaimanapun, untuk tujuan ujian atau kes penggunaan tertentu, mungkin perlu melumpuhkan pengumpulan sambungan.

Untuk melumpuhkan pengumpulan sambungan untuk http.Client, dua kaedah boleh digunakan: menetapkan Transport.DisableKeepAlives atau menetapkan Transport.MaxIdleConnsPerHost hingga -1.

Menggunakan Transport.DisableKeepAlives

Medan Transport.DisableKeepAlives mengawal sama ada pengangkutan menyahdayakan keep-alive untuk permintaan. Menetapkannya kepada benar menghalang sambungan daripada terus dibuka antara permintaan. Kaedah ini disyorkan jika melumpuhkan keep-alive dikehendaki.

Untuk melumpuhkan keep-alive, gunakan kod berikut:

import (
    "net/http"
    "time"
)

func main() {
    t := http.DefaultTransport.(*http.Transport).Clone()
    t.DisableKeepAlives = true
    
    c := &http.Client{Transport: t}
    // ...
}

Menggunakan Transport.MaxIdleConnsPerHost

Medan Transport.MaxIdleConnsPerHost mengawal bilangan maksimum sambungan melahu bagi setiap hos. Menetapkannya kepada -1 menyahdayakan kumpulan sambungan dengan menghalang sebarang sambungan daripada terus melahu.

Untuk melumpuhkan pengumpulan sambungan menggunakan kaedah ini, gunakan kod berikut:

import (
    "net/http"
    "time"
)

func main() {
    t := http.DefaultTransport.(*http.Transport).Clone()
    t.MaxIdleConnsPerHost = -1
    
    c := &http.Client{Transport: t}
    // ...
}

Nota :

Menetapkan Dialer.KeepAlive ke -1 tidak melumpuhkan pengumpulan sambungan. Sebaliknya, ia melumpuhkan keep-alive untuk sambungan aktif, tetapi sambungan masih diuruskan dalam kumpulan sambungan.

Pertimbangan Tambahan:

  • Melumpuhkan pengumpulan sambungan mungkin mengurangkan prestasi sebagai sambungan baharu mesti diwujudkan untuk setiap permintaan.
  • Pengangkutan lalai untuk http.Client menggunakan TLS untuk menyulitkan sambungan. Melumpuhkan pengumpulan sambungan boleh menjejaskan penyambungan semula dan prestasi sesi TLS.

Atas ialah kandungan terperinci Bagaimana untuk Melumpuhkan Penggabungan Sambungan untuk http.Client Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn