Maison > développement back-end > Golang > Comment puis-je désactiver le regroupement de connexions dans le http.Client de Go pour de nouvelles connexions TCP ?

Comment puis-je désactiver le regroupement de connexions dans le http.Client de Go pour de nouvelles connexions TCP ?

Patricia Arquette
Libérer: 2024-11-07 17:17:03
original
925 Les gens l'ont consulté

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

Désactivation du regroupement de connexions pour Go http.Client

Pour obtenir une nouvelle connexion TCP pour chaque requête HTTP/1.x lors des tests, la désactivation du mécanisme de regroupement de connexions dans le client HTTP de Go est essentielle. Cela peut être accompli en modifiant le transport HTTP associé au client.

Une approche consiste à définir DisableKeepAlives sur true dans le transport :

t := http.DefaultTransport.(*http.Transport).Clone()
t.DisableKeepAlives = true
c := &http.Client{Transport: t}
Copier après la connexion

Cette option désactive explicitement les connexions keep-alive, obligeant le client à établir une nouvelle connexion TCP pour chaque requête. Cependant, il peut ajouter un en-tête Connection: close aux requêtes.

Alternativement, définir MaxIdleConnsPerHost sur une valeur négative désactive efficacement le pooling :

t := http.DefaultTransport.(*http.Transport).Clone()
t.MaxIdleConnsPerHost = -1
c := &http.Client{Transport: t}
Copier après la connexion

Avec cette option, le transport n'ajoutera jamais de connexions. au pool, garantissant qu'une nouvelle connexion est établie pour chaque demande.

La création d'un nouveau transport pour stocker ces paramètres est recommandée afin de préserver la configuration de transport par défaut.

Réglage de Dialer.KeepAlive sur - 1 ne désactive pas le pooling car il contrôle principalement le comportement de maintien des connexions actives. Contrairement aux hypothèses courantes, cette option n'a pas d'impact sur le nombre de connexions TCP établies.

Enfin, définir IdleConnTimeout sur une durée très courte, telle que 1 * time.Nanosecond, peut également aider à garantir que les connexions inactives sont fermées. rapidement. Cependant, cette approche doit être utilisée avec prudence pour éviter d'éventuelles conditions de concurrence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal