Heim >Backend-Entwicklung >Golang >Wie deaktiviere ich das Verbindungspooling für den http.Client von Go?

Wie deaktiviere ich das Verbindungspooling für den http.Client von Go?

DDD
DDDOriginal
2024-11-08 16:01:02417Durchsuche

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

Verbindungspooling für Go http.Client deaktivieren

In Go verwaltet der net/http.Client Verbindungen zu HTTP-Servern. Standardmäßig wird Verbindungspooling verwendet, um die Leistung durch Wiederverwendung vorhandener Verbindungen zu verbessern. Für Testzwecke oder bestimmte Anwendungsfälle kann es jedoch erforderlich sein, das Verbindungspooling zu deaktivieren.

Um das Verbindungspooling für einen http.Client zu deaktivieren, können zwei Methoden verwendet werden: Festlegen von Transport.DisableKeepAlives oder Festlegen von Transport.MaxIdleConnsPerHost auf -1.

Verwenden von Transport.DisableKeepAlives

Das Feld Transport.DisableKeepAlives steuert, ob der Transport Keep-Alive für Anfragen deaktiviert. Wenn Sie den Wert auf „true“ setzen, wird verhindert, dass Verbindungen zwischen Anforderungen offen gehalten werden. Diese Methode wird empfohlen, wenn die Deaktivierung von Keep-Alives gewünscht wird.

Um Keep-Alives zu deaktivieren, verwenden Sie den folgenden Code:

import (
    "net/http"
    "time"
)

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

Verwenden von Transport.MaxIdleConnsPerHost

Das Feld Transport.MaxIdleConnsPerHost steuert die maximale Anzahl inaktiver Verbindungen pro Host. Wenn Sie ihn auf -1 setzen, wird der Verbindungspool deaktiviert, indem verhindert wird, dass Verbindungen im Leerlauf bleiben.

Um das Verbindungspooling mit dieser Methode zu deaktivieren, verwenden Sie den folgenden Code:

import (
    "net/http"
    "time"
)

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

Hinweis :

Das Festlegen von Dialer.KeepAlive auf -1 deaktiviert das Verbindungspooling nicht. Stattdessen werden Keep-Alives für aktive Verbindungen deaktiviert, aber Verbindungen werden weiterhin im Verbindungspool verwaltet.

Zusätzliche Überlegungen:

  • Das Deaktivieren des Verbindungspoolings kann zu einer Verringerung führen Leistung, da für jede Anfrage neue Verbindungen hergestellt werden müssen.
  • Der Standardtransport für http.Client verwendet TLS, um Verbindungen zu verschlüsseln. Das Deaktivieren des Verbindungspoolings kann sich auf die Wiederaufnahme und Leistung der TLS-Sitzung auswirken.

Das obige ist der detaillierte Inhalt vonWie deaktiviere ich das Verbindungspooling für den http.Client von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn