Maison > développement back-end > Golang > Pourquoi est-ce que je crée toujours plusieurs connexions dans mon client HTTP Go même avec « DisableKeepAlives » défini sur False ?

Pourquoi est-ce que je crée toujours plusieurs connexions dans mon client HTTP Go même avec « DisableKeepAlives » défini sur False ?

Mary-Kate Olsen
Libérer: 2024-11-03 06:21:30
original
1032 Les gens l'ont consulté

Why Am I Still Creating Multiple Connections in My Go HTTP Client Even with `DisableKeepAlives` Set to False?

Dépannage de la réutilisation des connexions dans le client HTTP de Go

Problème :Pourquoi mon client HTTP Go crée-t-il plusieurs connexions au même hôte, malgré l'utilisation du Désactiver l'option KeepAlives sur false ?

Le client HTTP Go est conçu pour réutiliser les connexions par défaut. Cependant, certaines conditions peuvent l'en empêcher.

Diagnostic :

Dans le code fourni, la méthode http.Transport.RoundTrip() n'est pas immédiatement suivi d'un appel à resp.Close(). Cela peut conduire à la fermeture de la connexion immédiatement après l'envoi de la requête, empêchant sa réutilisation pour des requêtes ultérieures.

Solution :

Pour assurer la réutilisation de la connexion HTTP, deux étapes sont nécessaires :

  1. Lire jusqu'à ce que la réponse soit complète, en s'assurant que toutes les données sont consommées à partir du corps de la réponse. Utilisez io.Copy(ioutil.Discard, resp.Body) ou ioutil.ReadAll(resp.Body) à cet effet.
  2. Appelez res.Body.Close() pour fermer explicitement le corps de la réponse, libérant ainsi la connexion pour réutilisation.

Extrait de code :

<code class="go">res, _ := client.Do(req)
io.Copy(ioutil.Discard, res.Body)
res.Body.Close()</code>
Copier après la connexion

Considérations supplémentaires :

  • Définition du L'option DisableKeepAlives sur true désactive explicitement la réutilisation de la connexion, quels que soient les autres paramètres.
  • Limiter le nombre de requêtes sortantes par seconde peut être obtenu à l'aide de techniques telles que time.Tick. Cependant, cela n'est pas spécifiquement lié à la réutilisation des connexions et peut ne pas être nécessaire si la réutilisation des connexions fonctionne correctement.

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