Come faccio a risolvere i problemi di avvio a freddo della funzione Lambda?

5 minuti di lettura
0

La mia funzione AWS Lambda presenta una durata di avvio a freddo ad alta latenza.

Risoluzione

La configurazione iniziale di una richiesta di funzione Lambda per l'ambiente e il codice viene definita periodo di avvio a freddo o latenza di avvio. Per ridurre al minimo il periodo di avvio a freddo e la latenza della funzione Lambda, segui queste istruzioni in base al tuo caso d'uso.

Codice delle funzioni Lambda e procedure consigliate di configurazione

  • Aumentare la memoria allocata alla funzione Lambda. L'intervallo di avvio a freddo dipende dalla dimensione della funzione, dalla quantità di memoria allocata e dalla complessità del codice. L'aggiunta di memoria aumenta proporzionalmente la quantità di CPU, incrementando la potenza di calcolo complessiva disponibile. Per ulteriori informazioni, vedi Memoria e potenza di calcolo.
  • Riduci al minimo le dimensioni del tuo pacchetto di implementazione. Più piccolo è il pacchetto di implementazione, più veloce sarà l'avvio della funzione. Riduci al minimo il numero di dipendenze e librerie esterne importate dalla funzione e mantieni le dimensioni del pacchetto di implementazione inferiori a 50 MB. Per ulteriori informazioni, consulta Pacchetti di implementazione Lambda.
  • Ottimizza il codice della funzione Lambda per ridurre al minimo il tempo necessario per l'inizializzazione. Riduci il numero di dipendenze e librerie esterne importate dalla funzione. Riduci la quantità di codice eseguito durante l'inizializzazione.
  • Evita calcoli complessi all'avvio. Se la funzione richiede un calcolo complesso all'avvio, ad esempio il caricamento di set di dati di grandi dimensioni, è possibile eseguirlo in background. Esegui il calcolo in un thread in background durante la fase Init. Quindi, memorizza nella cache i risultati per le chiamate successive. La memorizzazione nella cache dei risultati aiuta a ridurre il tempo necessario per calcoli complessi all'avvio.
  • Riutilizza le connessioni al database Amazon Relational Database Service (Amazon RDS). Se la tua funzione si connette a un database Amazon RDS, puoi creare un proxy del database Server proxy per Amazon RDS per la tua funzione. Un proxy di database gestisce un pool di connessioni al database. Il riutilizzo delle connessioni al database Amazon RDS riduce il tempo necessario per stabilire una connessione per ogni volta che la funzione viene richiamata.
  • Configura la concorrenza fornita. Le funzioni che utilizzano la concorrenza fornita non mostrano un comportamento di avvio a freddo perché l'ambiente di esecuzione viene preparato prima della chiamata. È possibile specificare il numero di istanze di funzione da tenere al caldo e per gestire il traffico.
  • Riduci al minimo la complessità delle tue dipendenze. Utilizza semplici framework che si caricano rapidamente all'avvio ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)dell'ambiente di esecuzione[.
  • Per ridurre il tempo impiegato da Lambda per decomprimere i pacchetti di implementazione creati in Java, inserisci i file .jar di dipendenza in una directory /lib separata. Separare i file.jar è più veloce che inserire tutto il codice della funzione in un unico jar con un gran numero di file .class. Per ulteriori informazioni, consulta Distribuire le funzioni Java Lambda con archivi di file.zip o JAR.
  • Usa il monitoraggio per scoprire i problemi e l'osservabilità per scoprirne il motivo. Monitora le prestazioni di avvio a freddo delle tue funzioni e usa Lambda Insights in Amazon CloudWatch per risolvere i problemi di prestazioni.

Per ulteriori informazioni, consulta Procedure consigliate per l'utilizzo delle funzioni Lambda.

Lunga durata INIT in concorrenza fornita

Nelle funzioni Lambda su richiesta, l'inizializzatore statico viene eseguito dopo la ricezione di una richiesta ma prima che venga richiamato il gestore. Ciò comporta una latenza per il richiedente e contribuisce alla durata complessiva dell'avvio a freddo.

  • Determina se la concorrenza della tua funzione supera il livello configurato di concorrenza fornita. Puoi controllare il numero di volte in cui la tua funzione viene richiamata utilizzando la metrica CloudWatch ProvisionedConcurrencySpilloverInvocations. Un valore diverso da zero indica che tutta la concorrenza fornita è in uso e che alcune chiamate sono avvenute con un avvio a freddo.
  • Controlla la frequenza delle chiamate (richieste al secondo). Le funzioni con concorrenza fornita hanno una velocità massima di 10 richieste al secondo per concorrenza fornita (richieste API Lambda). Ad esempio, una funzione configurata con 100 concorrenze fornite può gestire 1000 richieste al secondo. Se la frequenza di richiamo supera le 1000 richieste al secondo, potrebbero verificarsi alcuni avvii a freddo. Per ulteriori informazioni, consulta Lambda: Avvii a freddo con la concorrenza fornita.

Per ulteriori informazioni, vedi Come faccio a risolvere i problemi di concorrenza fornita da funzioni Lambda?

Richieste Amazon API Gateway integrate con Lambda

Se utilizzi Lambda con API Gateway e vedi una metrica di IntegrationLatency elevata, esamina i log di CloudWatch della tua funzione Lambda. L'elevata latenza deve essere risolta quando un endpoint API integrato con una funzione Lambda impiega troppo tempo per inviare risposte a un client. Gli avvii a freddo nelle funzioni Lambda non vengono registrati nella metrica di durata della funzione, quindi la latenza di integrazione dell'API potrebbe essere più lunga della durata della funzione. Per vedere la durata della tua funzione con avvio a freddo, usa AWS X-Ray.

Per ulteriori informazioni, vedi Come faccio a risolvere i problemi di latenza elevata nelle mie richieste API Gateway integrate con Lambda?

Informazioni correlate

Come faccio a ridurre la latenza della durata dell'inizializzazione e della chiamata per la mia funzione Java Lambda?

Miglioramento delle prestazioni di avvio con Lambda SnapStart per Java 11 Runtime

Lambda operativa: Ottimizzazione delle prestazioni — Parte 1

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa