Bagaimanakah saya boleh melumpuhkan Pengumpulan Sambungan dalam http.Client Go untuk Sambungan TCP Baru?

Patricia Arquette
Lepaskan: 2024-11-07 17:17:03
asal
902 orang telah melayarinya

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

Mematikan Pengumpulan Sambungan untuk Go http.Client

Untuk mencapai sambungan TCP baharu bagi setiap permintaan HTTP/1.x semasa menguji, melumpuhkan mekanisme pengumpulan sambungan dalam klien HTTP Go adalah penting. Ini boleh dicapai dengan mengubah suai pengangkutan HTTP yang dikaitkan dengan pelanggan.

Satu pendekatan ialah menetapkan DisableKeepAlives kepada benar dalam pengangkutan:

t := http.DefaultTransport.(*http.Transport).Clone()
t.DisableKeepAlives = true
c := &http.Client{Transport: t}
Salin selepas log masuk

Pilihan ini melumpuhkan sambungan keep-alive secara eksplisit, memaksa pelanggan untuk mewujudkan sambungan TCP baharu untuk setiap permintaan. Walau bagaimanapun, ia mungkin menambah sambungan: tutup pengepala kepada permintaan.

Sebagai alternatif, menetapkan MaxIdleConnsPerHost kepada nilai negatif dengan berkesan melumpuhkan pengumpulan:

t := http.DefaultTransport.(*http.Transport).Clone()
t.MaxIdleConnsPerHost = -1
c := &http.Client{Transport: t}
Salin selepas log masuk

Dengan pilihan ini, pengangkutan tidak akan sekali-kali menambah sambungan ke kolam renang, memastikan sambungan baharu diwujudkan untuk setiap permintaan.

Mencipta pengangkutan baharu untuk menyimpan ini tetapan disyorkan untuk mengekalkan konfigurasi pengangkutan lalai.

Menetapkan Dialer.KeepAlive kepada -1 tidak melumpuhkan pengumpulan kerana ia mengawal terutamanya kelakuan keep-alive untuk sambungan aktif. Bertentangan dengan andaian biasa, pilihan ini tidak memberi kesan kepada bilangan sambungan TCP yang diwujudkan.

Akhir sekali, menetapkan IdleConnTimeout kepada tempoh yang sangat singkat, seperti 1 * masa.Nanosaat, juga boleh membantu memastikan sambungan melahu ditutup dengan segera. Walau bagaimanapun, pendekatan ini harus digunakan dengan berhati-hati untuk mengelakkan keadaan perlumbaan yang berpotensi.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melumpuhkan Pengumpulan Sambungan dalam http.Client Go untuk Sambungan TCP Baru?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan