View a markdown version of this page

Informazioni sulla scalabilità delle funzioni di eventi 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à.

Informazioni sulla scalabilità delle funzioni di eventi Lambda

La concorrenza è il numero di richieste in corso che la tua AWS Lambda Event Function gestisce contemporaneamente. Per ogni richiesta simultanea, Lambda fornisce un'istanza separata del tuo ambiente di esecuzione. Man mano che le tue Event Functions ricevono più richieste, Lambda gestisce automaticamente il ridimensionamento del numero di ambienti di esecuzione fino al raggiungimento del limite di concorrenza del tuo account. Per impostazione predefinita, Lambda fornisce al tuo account un limite di concorrenza totale di 1.000 esecuzioni simultanee in tutte le funzioni evento in un. Regione AWS Per soddisfare le esigenze specifiche del tuo account, puoi richiedere un aumento della quota e configurare controlli di concorrenza a livello di funzione in modo che le funzioni evento critiche non subiscano limitazioni.

Questo argomento spiega i concetti di concorrenza e il ridimensionamento delle funzioni di evento in Lambda. Alla fine di questo argomento, sarà possibile capire come calcolare la simultaneità, visualizzare le due principali opzioni di controllo della simultaneità (riservata e fornita), stimare le impostazioni di controllo della simultaneità appropriate e visualizzare i parametri per un'ulteriore ottimizzazione.

Comprendere e visualizzare la simultaneità

Lambda richiama la tua Event Function in un ambiente di esecuzione sicuro e isolato. Per gestire una richiesta, Lambda deve prima inizializzare un ambiente di esecuzione (la fase Init), prima di utilizzarlo per richiamare la tua Event Function (la fase Invoke):

Ciclo di vita tipico di un ambiente di esecuzione, che mostra le fasi Init e Invoke.
Nota

Le durate effettive di Init e Invoke possono variare in base a molti fattori, come il runtime scelto e il codice Lambda Event Function. Il diagramma precedente non intende rappresentare le proporzioni esatte delle durate delle fasi Init e Invoke.

Il rettangolo nel diagramma rappresenta un singolo ambiente di esecuzione. Quando la tua Event Function riceve la sua primissima richiesta (rappresentata dal cerchio giallo con etichetta1), Lambda crea un nuovo ambiente di esecuzione ed esegue il codice all'esterno del gestore principale durante la fase di inizializzazione. Quindi, Lambda esegue il codice del gestore principale di Event Function durante la fase Invoke. Durante l'intero processo, questo ambiente di esecuzione è occupato e non può elaborare altre richieste.

Quando Lambda termina l'elaborazione della prima richiesta, questo ambiente di esecuzione può quindi elaborare richieste aggiuntive per la stessa funzione di evento. Per le richieste successive, Lambda non deve reinizializzare l'ambiente.

Un ambiente di esecuzione che gestisce due richieste in successione.

Nel diagramma precedente, Lambda riutilizza l'ambiente di esecuzione per gestire la seconda richiesta (rappresentata dal cerchio giallo con etichetta 2).

Finora ci siamo concentrati su una sola istanza dell'ambiente di esecuzione (ossia una simultaneità pari a 1). In pratica, Lambda potrebbe dover fornire più istanze dell'ambiente di esecuzione in parallelo per gestire tutte le richieste in arrivo. Quando la tua Event Function riceve una nuova richiesta, può succedere una delle due cose:

  • Se è disponibile un'istanza dell'ambiente di esecuzione pre-inizializzata, Lambda la utilizza per elaborare la richiesta.

  • Altrimenti, Lambda crea una nuova istanza dell'ambiente di esecuzione.

Ad esempio, esaminiamo cosa succede quando la tua Event Function riceve 10 richieste:

Una funzione di eventi Lambda che fornisce più ambienti per gestire 10 richieste.

Nel diagramma precedente, ogni piano orizzontale rappresenta una singola istanza dell'ambiente di esecuzione (etichettata da A a F). Ecco come Lambda gestisce ogni richiesta:

Richiesta Comportamento di Lambda Ragionamento

1

Fornisce il nuovo ambiente A

Questa è la prima richiesta; nessuna istanza dell'ambiente di esecuzione è disponibile.

2

Fornisce il nuovo ambiente B

L'istanza A dell'ambiente di esecuzione esistente è occupata.

3

Fornisce il nuovo ambiente C

Le istanze A e B dell'ambiente di esecuzione esistenti sono entrambe occupate.

4

Fornisce il nuovo ambiente D

Le istanze A, B e C dell'ambiente di esecuzione esistenti sono tutte occupate.

5

Fornisce il nuovo ambiente E

Le istanze A, B, C e D dell'ambiente di esecuzione esistenti sono tutte occupate.

6

Riutilizza l'ambiente A

L'istanza A dell'ambiente di esecuzione ha terminato l'elaborazione della richiesta 1 ed è ora disponibile.

7

Riutilizza l'ambiente B

L'istanza B dell'ambiente di esecuzione ha terminato l'elaborazione della richiesta 2 ed è ora disponibile.

8

Riutilizza l'ambienteC

L'istanza C dell'ambiente di esecuzione ha terminato l'elaborazione della richiesta 3 ed è ora disponibile.

9

Fornisce il nuovo ambiente F

Le istanze A, B, C, D e E dell'ambiente di esecuzione esistenti sono tutte occupate.

10

Riutilizza l'ambiente D

L'istanza D dell'ambiente di esecuzione ha terminato l'elaborazione della richiesta 4 ed è ora disponibile.

Man mano che la tua Event Function riceve più richieste simultanee, Lambda aumenta il numero di istanze dell'ambiente di esecuzione in risposta. L'animazione seguente tiene traccia del numero di richieste simultanee nel tempo:

Animazione che illustra le richieste simultanee nel tempo.

Osservando l'animazione precedente in sei momenti distinti nel tempo, otteniamo il seguente diagramma:

Concorrenza delle funzioni Event in sei momenti distinti.

Nel diagramma precedente, possiamo tracciare una linea verticale in qualsiasi momento e contare il numero di ambienti che intersecano questa linea. Questo ci dà il numero di richieste simultanee in quel momento. Ad esempio, al momento t1, ci sono tre ambienti attivi che gestiscono tre richieste simultanee. Il numero massimo di richieste simultanee in questa simulazione si verifica nel momento t4, quando ci sono sei ambienti attivi che gestiscono sei richieste simultanee.

Per riassumere, la concorrenza della funzione evento è il numero di richieste simultanee che gestisce contemporaneamente. In risposta a un aumento della concorrenza della tua Event Function, Lambda fornisce più istanze dell'ambiente di esecuzione per soddisfare la domanda di richieste.

Calcolo della concorrenza per una funzione di evento

In generale, la simultaneità di un sistema è la capacità di elaborare più di un'attività contemporaneamente. In Lambda, la concorrenza è il numero di richieste in corso che la tua Event Function gestisce contemporaneamente. Un modo rapido e pratico per misurare la concorrenza di una funzione evento Lambda consiste nell'utilizzare la seguente formula:

Concurrency = (average requests per second) * (average request duration in seconds)

La simultaneità è diversa dalle richieste al secondo. Ad esempio, supponiamo che la tua Event Function riceva in media 100 richieste al secondo. Se la durata media della richiesta è di 1 secondo, anche la simultaneità è 100:

Concurrency = (100 requests/second) * (1 second/request) = 100

Tuttavia, se la durata media della richiesta è di 500 ms, la simultaneità è 50:

Concurrency = (100 requests/second) * (0.5 second/request) = 50

Cosa significa in pratica una simultaneità pari a 50? Se la durata media della richiesta è di 500 ms, si può immaginare che un'istanza della funzione sia in grado di gestire 2 richieste al secondo. Quindi, sono necessarie 50 istanze della funzione per gestire un carico di 100 richieste al secondo. Una simultaneità pari a 50 significa che Lambda deve fornire 50 istanze dell'ambiente di esecuzione per gestire in modo efficiente questo carico di lavoro senza alcuna limitazione. Ecco come esprimerlo in forma di equazione:

Concurrency = (100 requests/second) / (2 requests/second) = 50

Se la funzione evento riceve il doppio del numero di richieste (200 richieste al secondo), ma richiede solo la metà del tempo per elaborare ciascuna richiesta (250 ms), la concorrenza è ancora 50:

Concurrency = (200 requests/second) * (0.25 second/request) = 50

Supponiamo di avere una funzione evento che impiega, in media, 200 ms per essere eseguita. Durante i picchi di carico, si osservano 5.000 richieste al secondo. Qual è la concomitanza della funzione Event durante i picchi di carico?

La durata media della Event Function è di 200 ms o 0,2 secondi. Utilizzando la formula della simultaneità, a partire da questi numeri si ottiene una simultaneità pari a 1.000:

Concurrency = (5,000 requests/second) * (0.2 seconds/request) = 1,000

In alternativa, una durata media della funzione evento di 200 ms significa che la funzione evento può elaborare 5 richieste al secondo. Per gestire il carico di lavoro di 5.000 richieste al secondo, sono necessarie 1.000 istanze dell'ambiente di esecuzione. Pertanto, la simultaneità è 1.000:

Concurrency = (5,000 requests/second) / (5 requests/second) = 1,000

Informazioni sulla simultaneità riservata e simultaneità fornita

Per impostazione predefinita, il tuo account ha un limite di 1.000 esecuzioni simultanee in tutte le funzioni di evento di una regione. Le tue funzioni per eventi condividono questo pool di 1.000 eventi simultanei su richiesta. Le tue Event Functions subiscono una limitazione (ovvero, iniziano a far cadere le richieste) se esaurisci la concorrenza disponibile.

Alcune delle tue funzioni relative agli eventi potrebbero essere più importanti di altre. Di conseguenza, potresti voler configurare le impostazioni di concorrenza per garantire che le funzioni degli eventi critici ottengano la concorrenza di cui hanno bisogno. Lambda fornisce due tipi di controlli della simultaneità: la simultaneità riservata e la simultaneità fornita.

  • Utilizza la concorrenza riservata per impostare il numero massimo e minimo di istanze simultanee per riservare una parte della concorrenza del tuo account a una funzione evento. Ciò è utile se non volete che altre funzioni di evento occupino tutta la concorrenza non riservata disponibile. Quando una funzione evento ha una concorrenza riservata, nessun'altra funzione evento può utilizzare tale concorrenza.

  • Utilizzate la concorrenza fornita per preinizializzare una serie di istanze di ambiente per una funzione di evento. Ciò è utile per ridurre le latenze di avviamento a freddo.

Simultaneità riservata

Se vuoi garantire che una certa quantità di concorrenza sia disponibile per la tua Event Function in qualsiasi momento, usa la concorrenza riservata.

La concorrenza riservata imposta il numero massimo e minimo di istanze simultanee da allocare alla funzione evento. Quando si dedica la concorrenza riservata a una funzione evento, nessun'altra funzione evento può utilizzare tale concorrenza. In altre parole, l'impostazione della concorrenza riservata può influire sul pool di concorrenza disponibile per altre funzioni di evento. Le funzioni di evento che non hanno una concorrenza riservata condividono il pool rimanente di concorrenza non riservata.

La configurazione della simultaneità riservata viene conteggiata ai fini del limite complessivo di simultaneità dell'account. Non è previsto alcun costo per la configurazione della concorrenza riservata per una funzione evento.

Per comprendere meglio la simultaneità riservata, considera il seguente diagramma:

Comportamento di ridimensionamento delle funzioni di evento quando si configura la concorrenza riservata su funzioni di evento critiche.

In questo diagramma, il limite di concorrenza dell'account per tutte le funzioni di evento in questa regione è al limite predefinito di 1.000. Supponiamo di avere due Event Functions fondamentali function-blue e function-orange che normalmente prevedano di ricevere volumi di invocazioni elevati. Decidi di assegnare 400 unità di simultaneità riservata a function-blue e 400 unità di simultaneità riservata a function-orange. In questo esempio, tutte le altre funzioni relative agli eventi presenti nell'account devono condividere le restanti 200 unità di concorrenza non riservata.

Il diagramma presenta cinque punti di interesse:

  • Su t1, sia function-orange che function-blue iniziano a ricevere richieste. Ogni funzione evento inizia a utilizzare la parte allocata delle unità di concorrenza riservate.

  • Al momento t2, function-orange e function-blue stanno ricevendo costantemente più richieste. Allo stesso tempo, distribuisci altre funzioni di evento Lambda, che iniziano a ricevere richieste. Non si assegna la concorrenza riservata a queste altre funzioni di evento. Iniziano a utilizzare le restanti 200 unità di simultaneità non riservata.

  • Su t3, function-orange raggiunge la simultaneità massima di 400. Sebbene sia presente una simultaneità inutilizzata altrove nel tuo account, function-orange non può accedervi. La linea rossa indica che function-orange si sta verificando una limitazione e Lambda potrebbe interrompere le richieste.

  • Su t4, function-orange inizia a ricevere meno richieste e non è più limitato. Tuttavia, le altre funzioni relative agli eventi registrano un picco di traffico e iniziano a rallentare. Sebbene vi sia una concorrenza inutilizzata in altre parti dell'account, queste altre funzioni degli eventi non possono accedervi. La linea rossa indica che le altre funzioni relative agli eventi sono in fase di limitazione.

  • At5, le altre Event Functions iniziano a ricevere meno richieste e non sono più limitate.

Da questo esempio, nota che riservare la simultaneità ha i seguenti effetti:

  • La tua funzione evento può scalare indipendentemente dalle altre funzioni evento presenti nel tuo account. Tutte le funzioni evento del tuo account nella stessa regione che non dispongono di una concorrenza riservata condividono il pool di funzionalità di concorrenza non riservata. Senza la concorrenza riservata, le altre funzioni relative agli eventi possono potenzialmente utilizzare tutta la concorrenza disponibile. Ciò impedisce che le funzioni degli eventi critici si espandano, se necessario.

  • La tua Event Function non può essere scalata senza controllo. La concorrenza riservata limita la concorrenza massima e minima della funzione evento. Ciò significa che la funzione evento non può utilizzare la concorrenza riservata ad altre funzioni di evento o la concorrenza proveniente dal pool non riservato. Inoltre, la concorrenza riservata funge sia da limite inferiore che da limite superiore: riserva la capacità specificata esclusivamente per la funzione evento, impedendo al contempo che superi tale limite. Puoi riservare la concorrenza per evitare che la Funzione evento utilizzi tutta la concorrenza disponibile nel tuo account o sovraccarichi le risorse a valle.

  • Potresti non essere in grado di utilizzare tutta la concorrenza disponibile del tuo account. La prenotazione della concorrenza viene conteggiata ai fini del limite di concorrenza dell'account, ma ciò significa anche che altre funzioni relative agli eventi non possono utilizzare quella parte di concorrenza riservata. Se la vostra funzione evento non utilizza tutta la concorrenza che le riservate, state effettivamente sprecando quella concorrenza. Questo non è un problema, a meno che altre funzioni relative agli eventi del tuo account non possano trarre vantaggio dalla concorrenza sprecata.

Per informazioni su come gestire le impostazioni di concorrenza riservate per le funzioni degli eventi, consulta. Configurazione della concorrenza riservata per una funzione evento

Simultaneità con provisioning

Si utilizza la concorrenza riservata per definire il numero massimo di ambienti di esecuzione riservati per una funzione evento Lambda. Tuttavia, nessuno di questi ambienti è pre-inizializzato. Di conseguenza, le chiamate alla funzione evento potrebbero richiedere più tempo perché Lambda deve prima inizializzare il nuovo ambiente prima di poterlo utilizzare per richiamare la funzione evento. Quando Lambda deve inizializzare un nuovo ambiente per eseguire una chiamata, si parla di avvio a freddo. Per mitigare gli avviamenti a freddo, è possibile utilizzare la simultaneità fornita.

La concorrenza fornita è il numero di ambienti di esecuzione preinizializzati che desideri allocare alla tua Event Function. Se imposti la concorrenza assegnata su una funzione evento, Lambda inizializza quel numero di ambienti di esecuzione in modo che siano pronti a rispondere immediatamente alle richieste di Event Function.

Nota

La configurazione della simultaneità fornita comporta addebiti sul tuo account. Se lavori con i runtime Java 11 o Java 17, puoi anche usare SnapStart Lambda per mitigare i problemi di avvio a freddo senza costi aggiuntivi. SnapStart utilizza istantanee memorizzate nella cache dell'ambiente di esecuzione per migliorare significativamente le prestazioni di avvio. Non è possibile utilizzare entrambe le funzioni SnapStart e la contemporanea predisposta sulla stessa versione di Event Function. Per ulteriori informazioni su SnapStart funzionalità, limitazioni e regioni supportate, consulta. Migliorare le prestazioni di avvio con Lambda SnapStart

Quando si utilizza la simultaneità fornita, Lambda riavvia comunque gli ambienti di esecuzione in background. Ad esempio, ciò può verificarsi dopo un errore di chiamata. Tuttavia, in qualsiasi momento, Lambda assicura sempre che il numero di ambienti preinizializzati sia uguale al valore dell'impostazione di concorrenza fornita dalla Event Function. È importante sottolineare che, anche se utilizzi la concorrenza fornita, puoi comunque riscontrare un ritardo di avvio a freddo se Lambda deve reimpostare l'ambiente di esecuzione.

Al contrario, quando si utilizza la concorrenza riservata, Lambda potrebbe terminare completamente un ambiente dopo un periodo di inattività. Il diagramma seguente lo illustra confrontando il ciclo di vita di un singolo ambiente di esecuzione quando si configura la Event Function utilizzando la concorrenza riservata rispetto alla concorrenza fornita.

Confronto tra il comportamento della concorrenza riservata e quella della concorrenza fornita.

Il diagramma presenta 4 punti di interesse:

Orario Simultaneità riservata Simultaneità con provisioning

t1

Non succede niente.

Lambda pre-inizializza un'istanza dell'ambiente di esecuzione.

t2

Arriva la richiesta 1. Lambda deve inizializzare una nuova istanza dell'ambiente di esecuzione.

Arriva la richiesta 1. Lambda utilizza l'istanza pre-inizializzata dell'ambiente.

t3

Dopo una certa inattività, Lambda termina l'istanza dell'ambiente attivo.

Non succede niente.

t4

Arriva la richiesta 2. Lambda deve inizializzare una nuova istanza dell'ambiente di esecuzione.

Arriva la richiesta 2. Lambda utilizza l'istanza pre-inizializzata dell'ambiente.

Per comprendere meglio la simultaneità fornita, considera il seguente diagramma:

Comportamento di scalabilità delle funzioni di evento quando si configura la concorrenza assegnata su una funzione di evento critica.

In questo diagramma, hai un limite di simultaneità dell'account pari a 1.000. Decidi di assegnare 400 unità di simultaneità fornita a function-orange. Tutte le Event Functions del tuo account, inclusefunction-orange, possono utilizzare le restanti 600 unità di concorrenza non riservata.

Il diagramma presenta cinque punti di interesse:

  • Su t1, function-orange inizia a ricevere richieste. Poiché Lambda ha pre-inizializzato 400 istanze dell'ambiente di esecuzione, function-orange è pronta per la chiamata immediata.

  • Su t2, function-orange raggiunge le 400 richieste simultanee. Di conseguenza, function-orange esaurisce la simultaneità fornita. Tuttavia, poiché è ancora disponibile la simultaneità non riservata, Lambda può utilizzarla per gestire richieste aggiuntive a function-orange (senza limitazioni). Lambda deve creare nuove istanze per soddisfare queste richieste e la tua Event Function potrebbe subire latenze di avvio a freddo.

  • Su t3, function-orange torna a 400 richieste simultanee dopo un breve picco di traffico. Lambda è nuovamente in grado di gestire tutte le richieste senza latenze di avvio a freddo.

  • Alt4, Event Functions nel tuo account subisce un'esplosione di traffico. Questa esplosione può provenire da function-orange o da qualsiasi altra funzione evento presente nel tuo account. Per gestire queste richieste, Lambda utilizza la simultaneità non riservata.

  • At5, le Event Functions del tuo account raggiungono il limite massimo di 1.000 partecipanti simultanei e subiscono un throttling.

L'esempio precedente considerava solo la simultaneità assegnata. In pratica, è possibile impostare sia la concorrenza predisposta che la concorrenza riservata su una funzione evento. Potresti farlo se disponi di una Event Function che gestisce un carico costante di chiamate nei giorni feriali, ma registra regolarmente picchi di traffico nei fine settimana. In questo caso, è possibile utilizzare la simultaneità fornita per impostare una quantità di base di ambienti per gestire le richieste durante i giorni feriali e utilizzare la simultaneità riservata per gestire i picchi del fine settimana. Considera il seguente diagramma:

Comportamento di scalabilità di Event Function quando si utilizza sia la concorrenza riservata che quella assegnata.

In questo diagramma, supponiamo di configurare 200 unità di simultaneità fornita e 400 unità di simultaneità riservata per function-orange. Poiché è stata configurata la simultaneità riservata, function-orange non può utilizzare nessuna delle 600 unità di simultaneità non riservata.

Il diagramma presenta cinque punti di interesse:

  • Su t1, function-orange inizia a ricevere richieste. Poiché Lambda ha pre-inizializzato 200 istanze dell'ambiente di esecuzione, function-orange è pronta per la chiamata immediata.

  • Att2, function-orange utilizza tutta la concorrenza fornita. function-orangepuò continuare a soddisfare le richieste utilizzando la concorrenza riservata, ma tali richieste potrebbero subire latenze di avvio a freddo.

  • Su t3, function-orange raggiunge le 400 richieste simultanee. Di conseguenza, function-orange utilizza tutta la sua simultaneità riservata. Poiché function-orange non può utilizzare la simultaneità non riservata, le richieste iniziano a rallentare.

  • Su t4, function-orange inizia a ricevere meno richieste e non è più limitato.

  • Al momento t5, function-orange scende a 200 richieste simultanee, quindi tutte le richieste possono nuovamente utilizzare la simultaneità assegnata (ossia nessuna latenza di avvio a freddo).

Sia la simultaneità riservata che la simultaneità fornita vengono conteggiate ai fini del limite di simultaneità dell'account e delle quote regionali. In altre parole, l'allocazione della concorrenza riservata e fornita può influire sul pool di concorrenza disponibile per altre funzioni di evento. La configurazione della concorrenza fornita comporta costi a carico dell'utente. Account AWS

Nota

Se la quantità di concorrenza fornita nelle versioni e negli alias di una funzione di evento si somma alla concorrenza riservata della funzione di evento, tutte le chiamate vengono eseguite in base alla concorrenza fornita. Questa configurazione ha anche l'effetto di limitare la versione non pubblicata di Event Function (), che ne impedisce l'esecuzione. $LATEST Non è possibile allocare più concorrenza fornita rispetto a quella riservata per una funzione evento.

Per gestire le impostazioni di concorrenza assegnate per le funzioni degli eventi, vedere. Configurazione della concorrenza fornita per una funzione evento Per automatizzare il dimensionamento della simultaneità assegnata in base a una pianificazione o all'utilizzo dell'applicazione, consulta la pagina Utilizzo di Application Auto Scaling per automatizzare la gestione della simultaneità fornita.

Come Lambda alloca la simultaneità fornita

La simultaneità fornita non è disponibile online immediatamente dopo la configurazione. Lambda avvia l'allocazione della simultaneità fornita dopo uno o due minuti di preparazione. Per ogni Event Function, Lambda può fornire fino a 6.000 ambienti di esecuzione al minuto, indipendentemente da. Regione AWSÈ esattamente la stessa della velocità di scalabilità simultanea per Event Functions.

Quando invii una richiesta di allocazione della simultaneità fornita, non puoi accedere a nessuno di questi ambienti finché Lambda non completa l'allocazione. Ad esempio, se richiedi 5.000 simultaneità fornita, nessuna delle tue richieste potrà utilizzare la simultaneità fornita fino a che Lambda completa l'allocazione dei 5.000 ambienti di esecuzione.

Simultaneità riservata e simultaneità fornita di Lambda.

Di seguito è riportata una tabella che riassume e mette a confronto la simultaneità riservata e la simultaneità assegnata.

Topic Simultaneità riservata Simultaneità con provisioning

Definizione

Numero massimo di istanze dell'ambiente di esecuzione per la tua Event Function.

Imposta il numero di istanze dell'ambiente di esecuzione predisposte per la tua Event Function.

Comportamento del provisioning

Lambda fornisce nuove istanze su richiesta.

Lambda predispone le istanze (ovvero, prima che la Event Function inizi a ricevere richieste).

Comportamento dell'avvio a freddo

È possibile una latenza di avvio a freddo, poiché Lambda deve creare nuove istanze su richiesta.

La latenza di avvio a freddo non è possibile, poiché Lambda non deve creare istanze on demand.

Comportamento della limitazione

La funzione Event viene limitata quando viene raggiunto il limite di concorrenza riservato.

Se la concorrenza riservata non è impostata: Event Function utilizza la concorrenza non riservata quando viene raggiunto il limite di concorrenza fornito.

Se la concorrenza riservata è impostata: la funzione evento viene limitata quando viene raggiunto il limite di concorrenza riservato.

Comportamento predefinito se non impostato

Event Function utilizza la concorrenza non riservata disponibile nel tuo account.

Lambda non fornisce alcuna istanza in anticipo. Invece, se la concorrenza riservata non è impostata: Event Function utilizza la concorrenza non riservata disponibile nel tuo account.

Se la concorrenza riservata è impostata: Event Function utilizza la concorrenza riservata.

Prezzi

Nessun costo aggiuntivo.

Incorre in costi aggiuntivi.

Informazioni sulla simultaneità e le richieste al secondo

Come indicato nella sezione precedente, la simultaneità è diversa dalle richieste al secondo. Questa è una distinzione particolarmente importante da fare quando si lavora con funzioni di eventi che hanno una durata media della richiesta inferiore a 100 ms.

In tutte le funzioni evento del tuo account, Lambda applica un limite di richieste al secondo pari a 10 volte la concorrenza dell'account. Ad esempio, poiché il limite di concorrenza predefinito dell'account è 1.000, Event Functions nel tuo account può gestire un massimo di 10.000 richieste al secondo.

Ad esempio, si consideri una funzione evento con una durata media della richiesta di 50 ms. A 20.000 richieste al secondo, ecco la concorrenza di questa funzione evento:

Concurrency = (20,000 requests/second) * (0.05 second/request) = 1,000

In base a questo risultato, potresti aspettarti che il limite di simultaneità dell'account pari a 1.000 sia sufficiente per gestire questo carico. Tuttavia, a causa del limite di 10.000 richieste al secondo, la funzione evento può gestire solo 10.000 richieste al secondo sulle 20.000 richieste totali. Questa funzione evento subisce una limitazione.

La lezione è che è necessario considerare sia la concorrenza che le richieste al secondo quando si configurano le impostazioni di concorrenza per le funzioni degli eventi. In questo caso, devi richiedere un aumento del limite di simultaneità dell'account a 2.000, poiché ciò aumenterebbe il limite totale di richieste al secondo a 20.000.

Nota

In base a questo limite di richieste al secondo, non è corretto affermare che ogni ambiente di esecuzione Lambda può gestire solo un massimo di 10 richieste al secondo. Invece di osservare il carico su ogni singolo ambiente di esecuzione, Lambda considera solo la simultaneità complessiva e le richieste complessive al secondo nel calcolo delle quote.

Supponiamo di avere una funzione evento che impiega, in media, 20 ms per essere eseguita. Durante i picchi di carico, si registrano 30.000 richieste al secondo. Qual è la concomitanza della funzione Event durante i picchi di carico?

La durata media della Event Function è di 20 ms o 0,02 secondi. Utilizzando la formula della simultaneità, a partire da questi numeri si ottiene una simultaneità pari a 600:

Concurrency = (30,000 requests/second) * (0.02 seconds/request) = 600

Per impostazione predefinita, il limite di simultaneità dell'account pari a 1.000 sembra sufficiente per gestire questo carico. Tuttavia, il limite di 10.000 richieste al secondo non è sufficiente per gestire le 30.000 richieste in entrata al secondo. Per soddisfare appieno le 30.000 richieste, devi richiedere un aumento del limite di simultaneità dell'account a 3.000 o più.

Il limite di richieste al secondo si applica a tutte le quote in Lambda che prevedono la simultaneità. In altre parole, si applica alle funzioni evento sincrone su richiesta, alle funzioni evento che utilizzano la concorrenza fornita e il comportamento di ridimensionamento della concorrenza. Ad esempio, ecco alcuni scenari in cui è necessario considerare attentamente sia i limiti di simultaneità che quelli di richieste al secondo:

  • Una funzione evento che utilizza la concorrenza su richiesta può registrare un aumento improvviso della concorrenza di 500 ogni 10 secondi o di 5.000 richieste al secondo ogni 10 secondi, a seconda dell'evento che si verifica per primo.

  • Supponiamo di avere una funzione evento con un'allocazione simultanea assegnata di 10. Questa funzione di evento si ripercuote sulla concorrenza su richiesta dopo 10 simultanee o 100 richieste al secondo, a seconda dell'evento che si verifica per primo.

Quote di simultaneità

Lambda imposta le quote per la quantità totale di concorrenza che è possibile utilizzare in tutte le funzioni di evento in una regione. Queste quote esistono su due livelli:

Per verificare la quota di concorrenza a livello di account corrente, utilizzate il comando () per eseguire il seguente comando: AWS Command Line Interface AWS CLI

aws lambda get-account-settings

L'output restituito dovrebbe essere simile al seguente:

{ "AccountLimit": { "TotalCodeSize": 80530636800, "CodeSizeUnzipped": 262144000, "CodeSizeZipped": 52428800, "ConcurrentExecutions": 1000, "UnreservedConcurrentExecutions": 900 }, "AccountUsage": { "TotalCodeSize": 410759889, "FunctionCount": 8 } }

ConcurrentExecutionsè la tua quota di concorrenza totale a livello di account. UnreservedConcurrentExecutionsè la quantità di concorrenza riservata che puoi ancora assegnare alle tue funzioni di evento.

Man mano che la tua Event Function riceve più richieste, Lambda aumenta automaticamente il numero di ambienti di esecuzione per gestire queste richieste fino a quando l'account non raggiunge la quota di concorrenza. Tuttavia, per proteggersi dall'eccessivo aumento in risposta a improvvisi picchi di traffico, Lambda limita la velocità di dimensionamento delle funzioni. Questa velocità di scalabilità simultanea è la velocità massima alla quale Event Functions del tuo account può scalare in risposta a un aumento delle richieste. Si tratta della velocità con cui Lambda può creare nuovi ambienti di esecuzione. Il tasso di scalabilità simultanea è diverso dal limite di concorrenza a livello di account, che è la quantità totale di concorrenza disponibile per le Funzioni evento.

In ciascuna funzione evento Regione AWS, e per ogni funzione evento, il tasso di scalabilità simultanea è di 1.000 istanze di ambiente di esecuzione ogni 10 secondi (o 10.000 richieste al secondo ogni 10 secondi). In altre parole, ogni 10 secondi, Lambda può allocare al massimo 1.000 istanze aggiuntive dell'ambiente di esecuzione o gestire 10.000 richieste aggiuntive al secondo, per ciascuna delle tue funzioni.

Di solito, non è necessario preoccuparsi di questa limitazione. La velocità di dimensionamento di Lambda è sufficiente per la maggior parte dei casi d'uso.

È importante sottolineare che la velocità di scalabilità della simultaneità è un limite a livello di funzione. Ciò significa che ogni funzione evento del tuo account può scalare indipendentemente dalle altre funzioni di evento.

Per ulteriori informazioni sul comportamento di dimensionamento, consulta la pagina Comportamento di ridimensionamento delle funzioni degli eventi.