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.
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 Amazon ECS-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.
Reaktionsfähigkeit von SIGTERM
Amazon ECS sendet zunächst ein SIGTERM-Signal an die Aufgabe, um zu benachrichtigen, dass die Anwendung beendet und heruntergefahren werden muss. Dann sendet Amazon ECS eine SIGKILL-Nachricht. Wenn Anwendungen den SIGTERM ignorieren, muss der Amazon ECS-Service warten, bis er das SIGKILL-Signal sendet, um den Prozess zu beenden.
Wie lange Amazon ECS auf das Senden der SIGKILL-Nachricht wartet, wird durch die folgende Amazon ECS-Agentenoption bestimmt:
-
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 Amazon ECS-Agentenparameter auf den folgenden Wert:
-
ECS_CONTAINER_STOP_TIMEOUT
: 2Wenn Ihre Anwendung länger als 1 Sekunde benötigt, multiplizieren Sie den Wert mit 2 und verwenden Sie diese Zahl als Wert.
In diesem Fall wartet Amazon ECS 2 Sekunden, bis der Container heruntergefahren wird, 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 ein SIGKILL gesendet werden muss.