Heim >Backend-Entwicklung >Golang >Warum schlägt mein Go-HTTP-Server die ApacheBench-Tests mit den Fehlern „Verbindung abgelehnt' oder „Vorgangszeitüberschreitung' fehl?
Fehlerbehebung bei Verbindungsproblemen mit dem Go-HTTP-Server unter ApacheBench
Ihr Go-HTTP-Server hat während des ApacheBench-Tests Verbindungsprobleme. ApacheBench gibt Fehler wie „Verbindung abgelehnt“ oder „Zeitüberschreitung des Vorgangs“ zurück, was auf ein Problem mit der Fähigkeit des Servers hinweist, eingehende Anfragen zu verarbeiten.
Identifizierung der Grundursache: Port-Auslastung
Bei der Untersuchung stellt sich heraus, dass der Server nicht mehr über kurzlebige Ports verfügt. macOS verfügt über einen standardmäßigen flüchtigen Portbereich von 49152-65535, der nicht ausreicht, um eine große Menge gleichzeitiger Anfragen ohne Keepalive zu verarbeiten.
Mechanismus der Porterschöpfung
Jedes HTTP /1.0-Anfrage ohne Keepalive verbraucht einen eindeutigen kurzlebigen Port auf dem Server. Wenn dieser Portbereich erschöpft ist, stellt das Betriebssystem Anfragen für ungenutzte Ports in die Warteschlange.
Auswirkungen auf die Leistung
Sobald die Portwarteschlange voll ist, drosselt das Betriebssystem weitere eingehende Anfragen Verbindungen. Infolgedessen kann es bei Clients zu Verbindungsfehlern oder Zeitüberschreitungen kommen.
Behebung des Problems
Um das Problem zu entschärfen, ziehen Sie die folgenden Optionen in Betracht:
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Go-HTTP-Server die ApacheBench-Tests mit den Fehlern „Verbindung abgelehnt' oder „Vorgangszeitüberschreitung' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!