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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-06 22:25:02557Durchsuche

How can I disable connection pooling for Go's http.Client?

Verbindungspooling für den http.Client von Go deaktivieren

Um das Verbindungspooling für den http.Client von Go zu deaktivieren, können Sie dessen Transporteinstellungen ändern. Es gibt zwei Hauptansätze:

Ansatz 1: DisableKeepAlive

Wenn Sie Transport.DisableKeepAlives auf true setzen, wird verhindert, dass der Transport vorhandene Verbindungen wiederverwendet. Dies kann jedoch dazu führen, dass Anforderungen ein Connection: close-Header hinzugefügt wird, was möglicherweise nicht in allen Testszenarien wünschenswert ist.

Ansatz 2: MaxIdleConnsPerHost festlegen

Durch das Festlegen von Transport.MaxIdleConnsPerHost auf einen negativen Wert, z. B. -1, wird auch das Verbindungspooling effektiv deaktiviert. Im Gegensatz zu DisableKeepAlives hat dieser Ansatz keine Auswirkungen auf Anforderungsheader.

Beispielcode

Hier ist ein Beispiel für die Deaktivierung des Verbindungspoolings mit DisableKeepAlive:

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

Und hier ist ein Beispiel mit MaxIdleConnsPerHost:

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

Es ist wichtig zu beachten, dass die Einstellung von Dialer.KeepAlive auf -1 das Verbindungspooling nicht deaktiviert. Diese Einstellung betrifft nur das Keep-Alive-Verhalten aktiver Verbindungen, nicht die Erstellung neuer Verbindungen.

Das obige ist der detaillierte Inhalt vonWie kann ich das Verbindungspooling für den http.Client von Go deaktivieren?. 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