Dans les scénarios de test, il peut être nécessaire de désactiver le regroupement de connexions dans les clients HTTP de Go afin de créer de nouvelles connexions TCP pour chaque HTTP/ Demande 1.x. Ce guide explore différentes approches pour y parvenir.
Le http.Transport par défaut utilisé par http.Client permet le regroupement de connexions, ce qui peut s'avérer gênant. Pour désactiver le pooling, vous pouvez définir Transport.MaxIdleConnsPerHost sur une valeur négative ou définir Transport.DisableKeepAlives sur true.
Les Keep-alives sont couramment utilisés pour maintenir des connexions, mais définir Transport.DisableKeepAlives sur true force le client à fermer les connexions après chaque demande. Cette approche ajoute un en-tête de requête « Connexion : fermer » et peut être définie comme suit :
t := http.DefaultTransport.(*http.Transport).Clone() t.DisableKeepAlives = true c := &http.Client{Transport: t}
MaxIdleConnsPerHost, lorsqu'il est défini sur -1, limite le nombre de connexions inactives par hôte à 0. Cela désactive efficacement le pooling :
t := http.DefaultTransport.(*http.Transport).Clone() t.MaxIdleConnsPerHost = -1 c := &http.Client{Transport: t}
Dialer.KeepAlive peut sembler une option pour désactiver le pooling, mais il définit uniquement la période de conservation pour les connexions actives. Le pooling n'est pas affecté par ce paramètre.
Si vous le souhaitez, vous pouvez combiner les options ci-dessus avec des paramètres personnalisés pour DialContext, TLSHandshakeTimeout, ResponseHeaderTimeout et ExpectContinueTimeout dans l'objet Transport utilisé par le http.Client.
Il est important de noter que les limitations de pooling ne se limitent pas au nombre de connexions actives par hôte. Cependant, des options telles que MaxIdleConnsPerHost et DisableKeepAlives fournissent des méthodes efficaces pour désactiver le pooling à des fins de test.
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!