![So legen Sie Anforderungstimeouts bei jedem Netzwerk-Hop fest](https://rvso.com/image/782617/So%20legen%20Sie%20Anforderungstimeouts%20bei%20jedem%20Netzwerk-Hop%20fest.png)
Ich versuche, Netzwerk-Timeouts zu verstehen und wie sie für jeden Hop einer bestimmten Anfrage eingestellt werden sollten. Der Einfachheit halber betrachte ich keine Aufschlüsselung der Timeouts für Verbindung, Lesen und Schreiben und gehe davon aus, dass „Timeout“ „maximal zulässige Gesamtzeit vom ersten empfangenen Paket bis zum letzten gesendeten Paket“ bedeutet (oder umgekehrt für den Client). Angenommen, ich habe die folgenden Hops in meinem Anfragefluss:
(client) --> (AWS ALB) --> (nginx) --> (server)
… und nehmen wir an, dass mein Server so eingestellt ist, dass nach 10 Sekunden ein Timeout auftritt.
Meine Frage: Was wäre ein gültiger Satz von Timeouts für jeden Hop? Wäre es
// A
(client, 13s) --> (AWS ALB, 12s) --> (nginx, 11s) --> (server, 10s)
oder
// B
(client, 7s) --> (AWS ALB, 8s) --> (nginx, 9s) --> (server, 10s)
oder (C) etwas anderes?
Natürlich interessiert mich auch die Logik hinter Ihren Vorschlägen.
Antwort1
Wenn Sie harte Timeouts betrachten (Sie geben den Zweck nicht an), hat jede VerarbeitungsphasewenigerZeit als die vorherige. Grundsätzlich ist also Ansatz A der richtige.
Der Pfad vom Client zu AWSALB liegt jedoch außerhalb Ihrer Kontrolle und kann vergleichsweise langwierig/langsam sein. Eine Sekunde pro Schritt scheint sehr großzügig, also kein Problem. Wenn Sie das jedoch auf 50 oder vielleicht 100 ms pro Schritt reduzieren, benötigt der erste Schritt etwas mehr Zuweisung.