Verbindungspooling für Go http.Client deaktivieren
Um beim Testen für jede HTTP/1.x-Anfrage eine neue TCP-Verbindung herzustellen, Das Deaktivieren des Verbindungspooling-Mechanismus im HTTP-Client von Go ist unbedingt erforderlich. Dies kann durch Ändern des mit dem Client verbundenen HTTP-Transports erreicht werden.
Ein Ansatz besteht darin, DisableKeepAlives innerhalb des Transports auf „true“ zu setzen:
t := http.DefaultTransport.(*http.Transport).Clone() t.DisableKeepAlives = true c := &http.Client{Transport: t}
Diese Option deaktiviert explizit Keep-Alive-Verbindungen. Dadurch wird der Client gezwungen, für jede Anfrage eine neue TCP-Verbindung herzustellen. Es kann jedoch sein, dass Anfragen einen Connection: close-Header hinzugefügt werden.
Alternativ wird das Pooling effektiv deaktiviert, wenn MaxIdleConnsPerHost auf einen negativen Wert gesetzt wird:
t := http.DefaultTransport.(*http.Transport).Clone() t.MaxIdleConnsPerHost = -1 c := &http.Client{Transport: t}
Mit dieser Option fügt der Transport niemals Verbindungen hinzu zum Pool, um sicherzustellen, dass für jede Anfrage eine neue Verbindung hergestellt wird.
Es wird empfohlen, einen neuen Transport zum Speichern dieser Einstellungen zu erstellen, um die Standardtransportkonfiguration beizubehalten.
Dialer.KeepAlive auf - setzen 1 deaktiviert das Pooling nicht, da es hauptsächlich das Keep-Alive-Verhalten für aktive Verbindungen steuert. Entgegen allgemeiner Annahmen hat diese Option keinen Einfluss auf die Anzahl der hergestellten TCP-Verbindungen.
Schließlich kann das Festlegen von IdleConnTimeout auf eine sehr kurze Dauer, z. B. 1 * time.Nanosekunde, auch dazu beitragen, sicherzustellen, dass inaktive Verbindungen geschlossen werden sofort. Dieser Ansatz sollte jedoch mit Vorsicht angewendet werden, um potenzielle Rennbedingungen zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie kann ich das Verbindungspooling im http.Client von Go für neue TCP-Verbindungen deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!