Optimieren Sie die Parameter für den Load Balancer-Verbindungsabbau für Amazon ECS - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Optimieren Sie die Parameter für den Load Balancer-Verbindungsabbau für Amazon ECS

Um eine Optimierung zu ermöglichen, halten die Clients eine permanente Verbindung zum Container-Service aufrecht. Auf diese Weise können nachfolgende Anfragen von diesem Client die bestehende Verbindung wiederverwenden. Wenn Sie den Verkehr zu einem Container unterbrechen möchten, benachrichtigen Sie den Load Balancer. Der Load Balancer überprüft regelmäßig, ob der Client die Keep-Alive-Verbindung geschlossen hat. Der ECS Amazon-Agent überwacht den Load Balancer und wartet darauf, dass der Load Balancer meldet, dass die Keep-Alive-Verbindung geschlossen ist (das Ziel befindet sich in einem UNUSED Status).

Die Zeitspanne, die der Load Balancer darauf wartet, das Ziel in den UNUSED Status zu versetzen, entspricht der Verzögerung bei der Abmeldung. Sie können den folgenden Load Balancer-Parameter konfigurieren, um Ihre Bereitstellungen zu beschleunigen.

  • deregistration_delay.timeout_seconds: 300 (Standard)

Wenn Sie einen Service mit einer Antwortzeit unter 1 Sekunde haben, setzen Sie den Parameter auf den folgenden Wert, damit der Load Balancer nur 5 Sekunden wartet, bevor er die Verbindung zwischen dem Client und dem Back-End-Service unterbricht:

  • deregistration_delay.timeout_seconds: 5

Anmerkung

Setzen Sie den Wert nicht auf 5 Sekunden, wenn Sie einen Dienst mit lang anhaltenden Anfragen haben, wie z. B. langsame Datei-Uploads oder Streaming-Verbindungen.

SIGTERMReaktionsfähigkeit

Amazon sendet ECS zunächst ein SIGTERM Signal an die Aufgabe, um zu benachrichtigen, dass die Anwendung beendet und heruntergefahren werden muss. Dann ECS sendet Amazon eine SIGKILL Nachricht. Wenn Anwendungen das ignorierenSIGTERM, muss der ECS Amazon-Service warten, bis das SIGKILL Signal gesendet wird, um den Vorgang zu beenden.

Wie lange Amazon mit dem Senden der SIGKILL Nachricht ECS wartet, hängt von der folgenden ECS Amazon-Agentenoption ab:

  • ECS_CONTAINER_STOP_TIMEOUT: 30 (Standard)

    Weitere Informationen zum Container-Agent-Parameter finden Sie unter Amazon ECS Container Agent on GitHub.

Um die Wartezeit zu verkürzen, setzen Sie den ECS Amazon-Agentenparameter auf den folgenden Wert:

  • ECS_CONTAINER_STOP_TIMEOUT: 2

    Wenn Ihre Anwendung länger als 1 Sekunde dauert, multiplizieren Sie den Wert mit 2 und verwenden Sie diese Zahl als Wert.

In diesem Fall ECS wartet Amazon 2 Sekunden, bis der Container heruntergefahren ist, und Amazon ECS sendet dann eine SIGKILL Nachricht, wenn die Anwendung nicht gestoppt wurde.

Sie können den Anwendungscode auch ändern, um das SIGTERM Signal abzufangen und darauf zu reagieren. Das Folgende ist ein Beispiel in JavaScript:

process.on('SIGTERM', function() { server.close(); })

Dieser Code veranlasst den HTTP Server, nicht mehr auf neue Anfragen zu warten, alle laufenden Anfragen zu beantworten, und dann wird der Prozess Node.js beendet, weil die Ereignisschleife nichts zu tun hat. Wenn der Prozess also nur 500 ms benötigt, um seine laufenden Anfragen zu beenden, wird er vorzeitig beendet, ohne dass der Stop-Timeout abgewartet und eine Nachricht gesendet werden muss. SIGKILL