Scalabilità delle istanze gestite Lambda - AWS Lambda

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à.

Scalabilità delle istanze gestite Lambda

Le istanze gestite Lambda non sono scalabili all'arrivo delle chiamate e non supportano gli avviamenti a freddo. Al contrario, è scalabile in modo asincrono utilizzando segnali di consumo delle risorse. Le istanze gestite attualmente sono scalabili in base all'utilizzo delle risorse della CPU e alla saturazione di più valute.

Principali differenze:

  • Lambda (impostazione predefinita): scala quando non esiste un ambiente di esecuzione libero per gestire una chiamata in entrata (avvio a freddo)

  • Istanze gestite Lambda: scalabilità asincrona in base all'utilizzo delle risorse della CPU e alla saturazione multiconcorrenza degli ambienti di esecuzione

Se il traffico raddoppia più che nel giro di 5 minuti, potresti riscontrare rallentamenti man mano che Lambda ridimensiona le istanze e gli ambienti di esecuzione per soddisfare la domanda.

Il ciclo di vita della scalabilità

Lambda Managed Instances utilizza un'architettura distribuita per gestire la scalabilità:

Componenti:

  • Istanze gestite: esegui nel tuo account nelle sottoreti che fornisci

  • Router e scaler: componenti Lambda condivisi che indirizzano le chiamate e gestiscono la scalabilità

  • Lambda Agent: viene eseguito su ogni istanza gestita per gestire il ciclo di vita dell'ambiente di esecuzione e monitorare il consumo di risorse

Come funziona:

  1. Quando pubblichi una versione della funzione con un provider di capacità, Lambda avvia Managed Instances nel tuo account. Per impostazione predefinita, ne avvia tre per la resilienza AZ e avvia tre ambienti di esecuzione prima di contrassegnare la versione della funzione come ATTIVA.

  2. Ogni istanza gestita può eseguire ambienti di esecuzione per più funzioni mappate allo stesso provider di capacità.

  3. Man mano che il traffico fluisce verso l'applicazione, gli ambienti di esecuzione consumano risorse. L'agente Lambda invia una notifica allo Scaler, che decide se scalare nuovi ambienti di esecuzione o istanze gestite.

  4. Se Router tenta di inviare una chiamata a un ambiente di esecuzione con un elevato consumo di risorse, l'agente Lambda su quell'istanza gli notifica di riprovare su un'altra istanza.

  5. Quando il traffico diminuisce, Lambda Agent invia una notifica a Scaler, che decide di ridimensionare gli ambienti di esecuzione e scalare nelle istanze gestite.

Regolazione del comportamento di scalabilità

È possibile personalizzare il comportamento di scalabilità delle istanze gestite tramite quattro controlli:

Controlli a livello di funzione

1. Memoria delle funzioni e v CPUs

Scegli la dimensione della memoria e l'allocazione della vCPU per la tua funzione. La dimensione minima della funzione supportata è 2 GB e 1 vCPU.

Considerazioni:

  • Scegli un'impostazione di memoria e vCPU che supporti le esecuzioni simultanee della tua funzione

  • Non è possibile configurare una funzione con meno di 1 vCPU, poiché le funzioni in esecuzione su istanze gestite dovrebbero supportare carichi di lavoro multi-concorrenti.

  • Non puoi scegliere meno di 2 GB perché corrisponde al rapporto 2 a 1 tra memoria e vCPU delle istanze c, che hanno il rapporto più basso

  • Per le applicazioni Python, potrebbe essere necessario scegliere un rapporto più elevato tra memoria e vCPUs, ad esempio 4 a 1 o 8 a 1, a causa del modo in cui Python gestisce la multi-concorrenza

  • Se si eseguono operazioni che richiedono un uso intensivo della CPU o si eseguono operazioni di I/O limitate, è consigliabile scegliere più di una vCPU

2. Simultaneità massima

Imposta la concorrenza massima per ambiente di esecuzione.

Comportamento predefinito: Lambda sceglie impostazioni predefinite ragionevoli che bilanciano il consumo di risorse e la velocità effettiva, adatte a un'ampia varietà di applicazioni.

Linee guida per la regolazione:

  • Aumentare la concorrenza: se le chiamate alle funzioni utilizzano pochissima CPU, è possibile aumentare la concorrenza massima fino a un massimo di 64 per vCPU

  • Riduzione della concorrenza: se l'applicazione consuma una grande quantità di memoria e pochissima CPU, è possibile ridurre la concorrenza massima

Importante: poiché le istanze gestite Lambda sono pensate per applicazioni multi-concorrenti, gli ambienti di esecuzione con una concorrenza molto bassa possono presentare problemi di scalabilità.

Controlli a livello di provider di capacità

3. Obiettivo di utilizzo delle risorse

Scegli il tuo obiettivo per il consumo di utilizzo della CPU.

Comportamento predefinito: Lambda mantiene un margine di manovra sufficiente per raddoppiare il traffico entro 5 minuti senza acceleratori.

Opzioni di ottimizzazione:

  • Se il carico di lavoro è molto costante o se l'applicazione non è sensibile alle limitazioni, è possibile impostare l'obiettivo su un livello elevato per ottenere un maggiore utilizzo e ridurre i costi

  • Se si desidera mantenere un margine di manovra sufficiente in caso di picchi di traffico, è possibile impostare obiettivi di risorse a un livello basso, il che richiederà una maggiore capacità

4. Selezione del tipo di istanza

Imposta i tipi di istanza consentiti o esclusi.

Comportamento predefinito: Lambda sceglie i tipi di istanza migliori per il tuo carico di lavoro. Ti consigliamo di lasciare che le istanze gestite da Lambda scelgano i tipi di istanza per te, poiché limitare il numero di tipi di istanze possibili può comportare una minore disponibilità.

Configurazione personalizzata:

  • Requisiti hardware specifici: imposta i tipi di istanze consentiti su un elenco di istanze compatibili. Ad esempio, se disponi di un'applicazione che richiede un'elevata larghezza di banda di rete, puoi selezionare diversi tipi di istanze n

  • Ottimizzazione dei costi: per gli ambienti di test o sviluppo, puoi scegliere tipi di istanze più piccoli, come i tipi di istanze m7a.large

Fasi successive