Monitoraggio della simultaneità - 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à.

Monitoraggio della simultaneità

Lambda emette i parametri di CloudWatch Amazon per aiutarti a monitorare la concorrenza per le tue funzioni. Questo argomento illustra questi parametri e spiega come interpretarli.

Parametri generici di simultaneità

Per monitorare la simultaneità delle funzioni Lambda, utilizza i seguenti parametri. La granularità di ogni parametro è di 1 minuto.

  • ConcurrentExecutions: il numero di chiamate simultanee attive in un determinato momento. Lambda emette questo parametro per tutte le funzioni, gli alias e le versioni. Per qualsiasi funzione nella console Lambda, Lambda visualizza il grafico di ConcurrentExecutions in modo nativo nella scheda Monitoraggio, sotto Parametri. Visualizza questa metrica utilizzando. MAX

  • UnreservedConcurrentExecutions: il numero di chiamate simultanee attive che utilizzano la simultaneità non riservata. Lambda emette questo parametro per tutte le funzioni in una regione. Visualizza questa metrica utilizzando. MAX

  • ClaimedAccountConcurrency: la quantità di simultaneità che non è disponibile per le invocazioni on demand. ClaimedAccountConcurrency corrisponde a UnreservedConcurrentExecutions più la quantità di simultaneità allocata (ovvero la simultaneità totale riservata più la simultaneità totale fornita). Se ClaimedAccountConcurrency supera il limite di simultaneità dell'account, puoi richiedere un limite di simultaneità più elevato. Visualizza questa metrica utilizzando. MAX Per ulteriori informazioni, consulta Lavorare con il parametro ClaimedAccountConcurrency.

Parametri della simultaneità con provisioning

Per monitorare le funzioni Lambda che utilizzano la simultaneità fornita, utilizza i seguenti parametri. La granularità di ogni parametro è di 1 minuto.

  • ProvisionedConcurrentExecutions: il numero di istanze dell'ambiente di esecuzione che stanno attivamente elaborando una chiamata con la simultaneità fornita. Lambda emette questo parametro per ogni versione e alias di funzione per cui sia configurata la simultaneità fornita. Visualizza questa metrica utilizzando. MAX

ProvisionedConcurrentExecutions non è uguale al numero totale di unità di simultaneità fornita allocate. Ad esempio, si supponga di allocare 100 unità di simultaneità fornita a una versione di funzione. In un dato minuto, se almeno 50 di questi 100 ambienti di esecuzione gestivano le chiamate contemporaneamente, il valore di MAX(ProvisionedConcurrentExecutions) è 50.

  • ProvisionedConcurrencyInvocations: il numero di volte in cui Lambda richiama il codice di funzione tramite la simultaneità fornita. Lambda emette questo parametro per ogni versione e alias di funzione per cui sia configurata la simultaneità fornita. Visualizza questa metrica utilizzando. SUM

ProvisionedConcurrencyInvocations differisce da ProvisionedConcurrentExecutions per il fatto che ProvisionedConcurrencyInvocations conta il numero totale di chiamate, mentre ProvisionedConcurrentExecutions conta il numero di ambienti attivi. Per comprendere questa distinzione, esamina i seguenti scenari:

Confronto tra ProvisionedConcurrencyInvocations e. ProvisionedConcurrentExecutions

In questo esempio, supponiamo di ricevere 1 chiamata al minuto e che ogni chiamata richieda 2 minuti per essere completata. Ogni barra orizzontale arancione rappresenta una singola richiesta. Si supponga di allocare 10 unità di simultaneità fornita a questa funzione, in modo che ogni richiesta venga eseguita in base alla simultaneità fornita.

Tra i minuti 0 e 1, arriva la Request 1. Al minuto 1, il valore di MAX(ProvisionedConcurrentExecutions) è 1, poiché nell'ultimo minuto era attivo al massimo un ambiente di esecuzione. Il valore per SUM(ProvisionedConcurrencyInvocations) è anch'esso 1, poiché 1 nuova richiesta è arrivata nell'ultimo minuto.

Tra i minuti 1 e 2, arriva la Request 2 mentre la Request 1 è ancora in esecuzione. Al minuto 2, il valore di MAX(ProvisionedConcurrentExecutions) è 2, poiché nell'ultimo minuto erano attivi al massimo 2 ambienti di esecuzione. Tuttavia, il valore di SUM(ProvisionedConcurrencyInvocations) è 1, poiché nell'ultimo minuto è arrivata solo 1 nuova richiesta. I parametri continuano a comportarsi in questo modo fino alla fine dell'esempio.

  • ProvisionedConcurrencySpilloverInvocations: il numero di volte in cui Lambda richiama la funzione con la simultaneità (riservata o fornita) standard quando è in uso tutta la simultaneità fornita. Lambda emette questo parametro per ogni versione e alias di funzione per cui sia configurata la simultaneità fornita. Visualizza questa metrica utilizzando SUM. Il valore di ProvisionedConcurrencyInvocations + ProvisionedConcurrencySpilloverInvocations deve essere uguale al numero totale di chiamate delle funzioni (cioè il parametro Invocations).

    ProvisionedConcurrencyUtilization: la percentuale di simultaneità fornita in uso (ossia il valore di ProvisionedConcurrentExecutions diviso per la quantità totale di simultaneità fornita allocata). Lambda emette questo parametro per ogni versione e alias di funzione per cui sia configurata la simultaneità fornita. Visualizza questa metrica utilizzando. MAX

Ad esempio, si supponga di allocare 100 unità di simultaneità fornita a una versione di funzione. In un dato minuto, se almeno 60 di questi 100 ambienti di esecuzione gestivano le chiamate contemporaneamente, il valore di MAX(ProvisionedConcurrentExecutions) è 60 e il valore di MAX(ProvisionedConcurrencyUtilization) è 0,6.

Un valore elevato di ProvisionedConcurrencySpilloverInvocations può indicare che è necessario allocare simultaneità fornita aggiuntiva per la funzione. In alternativa, è possibile configurare Application Auto Scaling per gestire il dimensionamento automatico della simultaneità fornita in base a soglie predefinite.

Viceversa, valori costantemente bassi di ProvisionedConcurrencyUtilization possono indicare che hai allocato una quantità eccessiva di simultaneità fornita per la funzione.

Lavorare con il parametro ClaimedAccountConcurrency

Lambda utilizza il parametro ClaimedAccountConcurrency per determinare la quantità di simultaneità disponibile nell'account per le invocazioni on demand. Lambda calcola ClaimedAccountConcurrency utilizzando la formula seguente:

ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)

UnreservedConcurrentExecutions corrisponde al numero di invocazioni simultanee attive che utilizzano la simultaneità non riservata. La simultaneità allocata è la somma delle due parti seguenti (sostituendo RC come "simultaneità riservata" e PC come "simultaneità fornita"):

  • Il valore RC totale in tutte le funzioni di una Regione.

  • Il valore PC totale in tutte le funzioni di una Regione che utilizzanoPC, escluse le funzioni che utilizzano RC.

Nota

Non puoi allocare più PC di RC per una funzione. Pertanto, il valore RC di una funzione è sempre maggiore o uguale al suo valore PC. Per calcolare il contributo alla simultaneità allocata per tali funzioni con sia PC che RC, Lambda considera solo RC, che è il valore massimo tra i due.

Per determinare la quantità di simultaneità disponibile per le invocazioni on demand, Lambda utilizza il parametro ClaimedAccountConcurrency anziché ConcurrentExecutions. Sebbene sia utile per tenere traccia del numero di invocazioni simultanee attive, il parametro ConcurrentExecutions non sempre riflette la disponibilità di simultaneità effettiva. Questo perché Lambda considera anche la simultaneità riservata e la simultaneità fornita per determinare la disponibilità.

Per illustrare il funzionamento di ClaimedAccountConcurrency, immaginiamo uno scenario in cui configuri una grande quantità di simultaneità riservata e simultaneità fornita nelle funzioni che rimane per buona parte inutilizzata. Nell'esempio seguente, supponiamo che il limite di simultaneità dell'account sia 1.000 e che vi siano due funzioni principali nell'account: function-orange e function-blue. Assegni 600 unità di simultaneità riservata per function-orange. Assegni 200 unità di simultaneità fornita per function-blue. Supponiamo che, nel corso del tempo, implementi ulteriori funzioni e osservi lo schema di traffico seguente:

Un grafico che mostra come Lambda determina. ClaimedAccountConcurrency

Nel diagramma precedente, le linee nere indicano l'uso effettivo della simultaneità nel tempo, mentre la linea rossa indica il valore di ClaimedAccountConcurrency nel tempo. In tutto lo scenario, il valore minimo di ClaimedAccountConcurrency è 800, nonostante lo scarso utilizzo effettivo di simultaneità nelle funzioni. Questo perché hai assegnato 800 unità totali di simultaneità per function-orange e function-blue. Dal punto di vista di Lambda, hai "rivendicato" questa simultaneità per l'uso, quindi ti rimangono in effetti solo 200 unità di simultaneità per le altre funzioni.

In questo scenario, la concorrenza allocata è 800 nella formula ClaimedAccountConcurrency. Possiamo quindi ricavare il valore di ClaimedAccountConcurrency in corrispondenza di vari punti del diagramma:

  • In t1, ClaimedAccountConcurrency è 800 (800 + 0 UnreservedConcurrentExecutions).

  • In t2, ClaimedAccountConcurrency è 900 (800 + 100 UnreservedConcurrentExecutions).

  • In t3, ClaimedAccountConcurrency è di nuovo 900 (800 + 100 UnreservedConcurrentExecutions).

Configurazione della ClaimedAccountConcurrency metrica in CloudWatch

Lambda emette la metrica inClaimedAccountConcurrency. CloudWatch Utilizza questo parametro insieme al valore di SERVICE_QUOTA(ConcurrentExecutions) per ottenere la percentuale di utilizzo della simultaneità nel tuo account, come mostrato nella formula seguente:

Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%

La schermata seguente illustra come inserire graficamente questa formula. CloudWatch La linea claim_utilization verde rappresenta l'utilizzo della simultaneità nell'account, che è pari a circa il 40%:

Una schermata che mostra come utilizzare la metrica in. ClaimedAccountConcurrency CloudWatch

La schermata precedente include anche un CloudWatch allarme che entra in ALARM stato quando l'utilizzo della concorrenza supera il 70%. Puoi utilizzare il parametro ClaimedAccountConcurrency insieme ad allarmi simili per determinare in modo proattivo quando potrebbe essere necessario richiedere un limite di simultaneità dell'account più elevato.