Gos http.Get, Parallelität und Verbindungs-Reset durch Peer
Frage:
Warum schlagen bei der Verwendung von Go-Routinen und -Kanälen zum effizienten Herunterladen von Webseiten einige Anfragen mit dem Fehler „Verbindung vom Peer zurückgesetzt“ fehl? bei Ausführung von einem Server auf einem anderen Kontinent?
Antwort:
Der Fehler „Verbindung durch Peer zurückgesetzt“ weist darauf hin, dass der Remote-Server die Verbindung absichtlich oder unfreiwillig beendet hat aufgrund von Ressourcenbeschränkungen oder übermäßiger Verbindungsinitiierung. Um dieses Problem zu beheben:
1. Parallelitätsgrad optimieren:
Anstatt zahlreiche parallele Verbindungen (1000-2000) zu initiieren, experimentieren Sie mit verschiedenen Parallelitätsgraden, um die effizienteste Anzahl zu ermitteln. Eine zu hohe Parallelität kann zum Zurücksetzen der Verbindung führen.
2. Legen Sie Transport.MaxIdleConnsPerHost fest:
Konfigurieren Sie den Transport.MaxIdleConnsPerHost-Wert so, dass er Ihrer Parallelitätsstufe entspricht. Wenn dieser Wert niedriger ist als die Anzahl gleichzeitiger Verbindungen, werden Serververbindungen möglicherweise nach jeder Anfrage geschlossen und müssen erneut geöffnet werden. Dieser wiederkehrende Öffnungs- und Schließvorgang kann den Fortschritt verlangsamen und möglicherweise die Serververbindungsgrenzen überschreiten.
3. Verbindungsinitiierungen verzögern:
Wenn das Problem weiterhin besteht, obwohl MaxIdleConnsPerHost entsprechend eingestellt ist, sollten Sie eine leichte Verzögerung zwischen Verbindungsinitiierungen einführen, um zu vermeiden, dass Verbindungsrücksetzungen vom Server ausgelöst werden.
Das obige ist der detaillierte Inhalt vonWarum schlagen die „http.Get'-Anfragen von Go auf allen Kontinenten mit dem Fehler „Verbindungszurücksetzung durch Peer' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!