Ottimizza i parametri di drenaggio della connessione del sistema di bilanciamento del carico per Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ottimizza i parametri di drenaggio della connessione del sistema di bilanciamento del carico per Amazon ECS

Per consentire l'ottimizzazione, i client mantengono una connessione keep alive al servizio container. Ciò consente alle richieste successive di quel client di riutilizzare la connessione esistente. Quando si desidera interrompere il traffico verso un container, si invia una notifica al sistema di bilanciamento del carico. Il load balancer controlla periodicamente se il client ha chiuso la connessione keep alive. L'agente Amazon ECS monitora il sistema di bilanciamento del carico e attende che il sistema di bilanciamento del carico segnali che la connessione keep alive è chiusa (la destinazione è in uno stato). UNUSED

La quantità di tempo che il load balancer attende per spostare la destinazione verso lo stato corrisponde al ritardo di annullamento della registrazione. UNUSED È possibile configurare il seguente parametro di bilanciamento del carico per velocizzare le distribuzioni.

  • deregistration_delay.timeout_seconds: 300 (impostazione predefinita)

Se disponi di un servizio con un tempo di risposta inferiore a 1 secondo, imposta il parametro sul valore seguente per fare in modo che il load balancer attenda solo 5 secondi prima di interrompere la connessione tra il client e il servizio di back-end:

  • deregistration_delay.timeout_seconds: 5

Nota

Non impostate il valore su 5 secondi quando disponete di un servizio con richieste di lunga durata, come caricamenti lenti di file o connessioni di streaming.

Reattività SIGTERM

Amazon ECS invia innanzitutto un segnale SIGTERM all'attività per notificare che l'applicazione deve essere completata e chiusa. Quindi, Amazon ECS invia un messaggio SIGKILL. Quando le applicazioni ignorano il SIGTERM, il servizio Amazon ECS deve attendere l'invio del segnale SIGKILL per terminare il processo.

La quantità di tempo che Amazon ECS attende per inviare il messaggio SIGKILL è determinata dalla seguente opzione dell'agente Amazon ECS:

  • ECS_CONTAINER_STOP_TIMEOUT: 30 (impostazione predefinita)

    Per ulteriori informazioni sul parametro Container Agent, consulta Amazon ECS Container Agent on GitHub.

Per accelerare il periodo di attesa, imposta il parametro dell'agente Amazon ECS sul seguente valore:

  • ECS_CONTAINER_STOP_TIMEOUT 2:

    Se l'applicazione impiega più di 1 secondo, moltiplica il valore per 2 e usa quel numero come valore.

In questo caso, Amazon ECS attende 2 secondi che il contenitore si spenga, quindi Amazon ECS invia un messaggio SIGKILL quando l'applicazione non si ferma.

Puoi anche modificare il codice dell'applicazione per intercettare il segnale SIGTERM e reagire ad esso. Di seguito è riportato un esempio in JavaScript:

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

Questo codice fa sì che il server HTTP smetta di ascoltare tutte le nuove richieste, finisca di rispondere a tutte le richieste in corso, quindi il processo Node.js termina perché il ciclo di eventi non ha nulla a che fare. Pertanto, se il processo impiega solo 500 ms per completare le richieste in corso, termina in anticipo senza dover attendere il timeout di arresto e ricevere un SIGKILL.