0Pricing
AWS Solutions Architect · Lezione

Concorrenza, throttling e concorrenza riservata

Comprenderete come Lambda aumenti la scalabilità concorrente, imposterete la concorrenza riservata per proteggere i servizi downstream e gestirete gli errori di throttling.

Concorrenza, throttling e concorrenza riservata è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.

Come Lambda gestisce la scalabilità della concorrenza

Lambda aumenta la scalabilità eseguendo più esecuzioni simultanee della funzione, una per ogni evento simultaneo. Quando arrivano 100 richieste nello stesso momento, Lambda esegue 100 istanze parallele della funzione. AWS gestisce automaticamente l'infrastruttura sottostante. Il limite di concorrenza a livello di account è, per impostazione predefinita, di 1.000 esecuzioni simultanee per Regione (un limite flessibile, aumentabile tramite una richiesta di quota del servizio).

Calcolo della concorrenza

La concorrenza si calcola come segue: Concorrenza = richieste al secondo × durata media in secondi. Se la funzione gestisce 500 richieste al secondo e ciascuna richiede 0,2 secondi, sono necessarie 100 esecuzioni simultanee. Comprendere questa formula La aiuta a prevedere se i limiti dell'account sono sufficienti e se è necessario richiedere aumenti della quota prima di un evento ad alto traffico.

# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100

# To check current concurrency limits:
aws lambda get-account-settings

Throttling: cosa succede quando si raggiungono i limiti

Quando Lambda riceve più richieste di quante ne consenta il limite di concorrenza, applica il throttling a quelle in eccesso. Per le invocazioni sincrone (ad esempio, tramite API Gateway), le richieste sottoposte a throttling ricevono immediatamente un errore 429 TooManyRequestsException, che deve essere gestito dal chiamante. Per le invocazioni asincrone (ad esempio, gli eventi S3), Lambda accoda gli eventi e ritenta per un massimo di 6 ore prima di inviarli a una coda di messaggi non recapitabili.

Spiegazione della concorrenza riservata

La Reserved Concurrency garantisce un numero specifico di esecuzioni simultanee per una determinata funzione, riservandole dal pool dell'account. Ha due scopi: (1) garantisce la capacità, perché la funzione avrà sempre quel numero di esecuzioni disponibili anche se altre funzioni stanno consumando la quota dell'account; (2) limita la concorrenza, perché la funzione non potrà mai superare la quantità riservata, proteggendo le dipendenze a valle da un sovraccarico.

# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
  --function-name 'CriticalProcessor' \
  --reserved-concurrent-executions 100

Proteggere i servizi a valle con la concorrenza riservata

Uno scenario d'esame importante: una funzione Lambda scrive in un database RDS che ha un limite di 50 connessioni. Senza controlli sulla concorrenza, Lambda potrebbe aumentare la scalabilità fino a centinaia di esecuzioni simultanee ed esaurire tutte le connessioni al database, causando errori per ogni funzione. Impostando la concorrenza riservata su 40, si garantisce che Lambda non superi mai 40 connessioni simultanee al database, proteggendo l'istanza RDS. Si tratta di un modello fondamentale per qualsiasi funzione Lambda che chiami un servizio con un numero limitato di connessioni.

Provisioned Concurrency per eliminare i cold start

La Provisioned Concurrency pre-inizializza un numero specificato di ambienti di esecuzione Lambda, che sono così pronti a rispondere immediatamente senza un cold start. È fondamentale per le API sensibili alla latenza, per le quali anche un cold start di 100 ms è inaccettabile. La Provisioned Concurrency comporta un costo orario anche quando gli ambienti sono inattivi; la combini quindi con Auto Scaling per adattare i livelli provisioned in base ai modelli di traffico previsti.

aws lambda put-provisioned-concurrency-config \
  --function-name 'LatencySensitiveAPI' \
  --qualifier 'prod' \
  --provisioned-concurrent-executions 50

Concorrenza riservata e Provisioned Concurrency a confronto

Questi due concetti vengono spesso confusi, ma hanno scopi diversi. La Reserved Concurrency limita e garantisce l'allocazione della capacità dal pool dell'account: NON elimina i cold start. La Provisioned Concurrency mantiene pronti gli ambienti di esecuzione per eliminare i cold start: NON impedisce alle altre funzioni di utilizzare lo stesso pool. Utilizzi la concorrenza riservata per limitare il throughput e la Provisioned Concurrency per migliorare la latenza. È possibile usare entrambe sulla stessa funzione.

Limiti di burst e scalabilità iniziale

Lambda non raggiunge istantaneamente la concorrenza massima. Esiste un limite di burst a livello di account (tasso di scalabilità iniziale) che varia in base alla Regione: in genere 3.000 esecuzioni iniziali in burst, seguite da 500 esecuzioni aggiuntive al minuto fino al raggiungimento del limite. Per le applicazioni che prevedono picchi improvvisi e molto elevati (traffico virale, vendite lampo), utilizzi la Provisioned Concurrency per mantenere già pronti ambienti sufficienti, evitando che il limite di burst causi throttling durante il picco iniziale.

Metriche della concorrenza Lambda in CloudWatch

Monitori la concorrenza Lambda con queste metriche chiave di CloudWatch:

  • ConcurrentExecutions: numero attuale di istanze in esecuzione
  • Throttles: numero di invocazioni sottoposte a throttling (dovrebbe essere zero in un sistema integro)
  • UnreservedConcurrentExecutions: pool non riservato a livello di account
  • ProvisionedConcurrencyUtilization: quantità di capacità provisioned in uso

Imposti allarmi su Throttles per ricevere una notifica prima che il throttling abbia conseguenze sugli utenti finali.

aws cloudwatch put-metric-alarm \
  --alarm-name 'LambdaThrottlesAlert' \
  --metric-name Throttles \
  --namespace AWS/Lambda \
  --dimensions Name=FunctionName,Value=MyFunction \
  --statistic Sum \
  --period 60 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1

Gestire il throttling nel codice dell'applicazione

Quando progetta sistemi che invocano Lambda in modo sincrono (API Gateway, chiamate dirette tramite SDK), implementi nel chiamante il backoff esponenziale con jitter. Gli SDK AWS dispongono di una logica di retry integrata, ma per Lambda eseguito tramite API Gateway deve gestire le risposte 429 nell'applicazione client. Per Lambda attivato da SQS, il servizio SQS gestisce autonomamente i retry; imposti adeguatamente il valore di Maximum Receives nella coda di origine e configuri una DLQ per i retry esauriti.

Concorrenza e trigger basati su stream

Per Kinesis Data Streams e DynamoDB Streams, la concorrenza Lambda è limitata dal numero di shard (Kinesis) o di partizioni (DynamoDB). Ogni shard o partizione viene elaborato da una sola esecuzione Lambda simultanea. Se dispone di 10 shard Kinesis, Lambda esegue fino a 10 esecuzioni simultanee per quel trigger. Ciò significa che i problemi di throttling con i trigger basati su stream si risolvono generalmente aumentando il numero di shard, anziché aumentando i limiti di concorrenza.

Verifica rapida

Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha appreso che la Reserved Concurrency garantisce e limita le esecuzioni simultanee di una funzione, proteggendo i servizi a valle e assicurando la disponibilità; la Provisioned Concurrency pre-inizializza gli ambienti per eliminare i cold start nei carichi di lavoro sensibili alla latenza; infine, il throttling si manifesta come errori 429 nelle invocazioni sincrone e come retry accodati in quelle asincrone, e deve essere monitorato con la metrica CloudWatch Throttles. Nella prossima lezione esamineremo Lambda Layers e i pacchetti di distribuzione per gestire grandi quantità di dipendenze.

Domande Frequenti

La lezione «Concorrenza, throttling e concorrenza riservata» è gratuita?

Sì — il testo completo di «Concorrenza, throttling e concorrenza riservata» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.

Cosa imparerò in «Concorrenza, throttling e concorrenza riservata»?

Comprenderete come Lambda aumenti la scalabilità concorrente, imposterete la concorrenza riservata per proteggere i servizi downstream e gestirete gli errori di throttling. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AWS Solutions Architect?

Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Concorrenza, throttling e concorrenza riservata»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?

Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Funzioni Lambda: runtime, trigger e handler
  2. Concorrenza, throttling e concorrenza riservata
  3. Lambda Layers e pacchetti di deployment
  4. Lambda@Edge e pattern event-driven
← Torna a AWS Solutions Architect