Maison >développement back-end >Golang >Comment désactiver le regroupement de connexions pour le client http.Go de Go ?

Comment désactiver le regroupement de connexions pour le client http.Go de Go ?

DDD
DDDoriginal
2024-11-08 16:01:02416parcourir

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

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

Dans Go, le net/http.Client gère les connexions aux serveurs HTTP. Par défaut, il utilise le regroupement de connexions pour améliorer les performances en réutilisant les connexions existantes. Cependant, à des fins de tests ou dans certains cas d'utilisation, il peut être nécessaire de désactiver le pooling de connexions.

Pour désactiver le pooling de connexions pour un http.Client, deux méthodes peuvent être utilisées : définir Transport.DisableKeepAlives ou définir Transport.MaxIdleConnsPerHost à -1.

Utilisation Transport.DisableKeepAlives

Le champ Transport.DisableKeepAlives contrôle si le transport désactive le maintien de la vie pour les requêtes. Le définir sur true empêche les connexions de rester ouvertes entre les requêtes. Cette méthode est recommandée si la désactivation des keep-alives est souhaitée.

Pour désactiver les keep-alives, utilisez le code suivant :

import (
    "net/http"
    "time"
)

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

Utilisation de Transport.MaxIdleConnsPerHost

Le champ Transport.MaxIdleConnsPerHost contrôle le nombre maximum de connexions inactives par hôte. Le définir sur -1 désactive le pool de connexions en empêchant toute connexion de rester inactive.

Pour désactiver le pool de connexions à l'aide de cette méthode, utilisez le code suivant :

import (
    "net/http"
    "time"
)

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

Remarque :

Le réglage de Dialer.KeepAlive sur -1 ne désactive pas le regroupement de connexions. Au lieu de cela, il désactive la conservation des connexions actives, mais les connexions sont toujours gérées dans le pool de connexions.

Considérations supplémentaires :

  • La désactivation du pool de connexions peut réduire performances car de nouvelles connexions doivent être établies pour chaque requête.
  • Le transport par défaut pour http.Client utilise TLS pour chiffrer les connexions. La désactivation du regroupement de connexions peut avoir un impact sur la reprise et les performances de la session TLS.

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!

Déclaration:
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