Configurazione delle richieste di preparazione per migliorare le prestazioni

Puoi utilizzare le richieste di preparazione per ridurre la latenza di richiesta e risposta durante il caricamento del codice dell'app in un'istanza appena creata.

App Engine deve caricare spesso il codice dell'app in una nuova istanza. Il caricamento di un'istanza può verificarsi nelle seguenti situazioni:

  • Quando esegui di nuovo il deployment di una versione dell'app.
  • Quando vengono create nuove istanze a causa del carico proveniente dalle richieste che superano la capacità dell'insieme corrente di istanze in esecuzione.
  • Quando si verificano interventi di manutenzione e riparazione di infrastrutture o hardware fisici sottostanti.

Il caricamento del codice dell'app in una nuova istanza può causare il caricamento delle richieste. Il caricamento delle richieste può comportare un aumento della latenza delle richieste per gli utenti, ma puoi evitare questa latenza utilizzando le richieste di preparazione. Le richieste di preparazione caricano il codice dell'app in una nuova istanza prima che le richieste in tempo reale raggiungano l'istanza.

Se sono attive le richieste di preparazione per la tua applicazione, App Engine tenta di rilevare quando l'applicazione richiede una nuova istanza e avvia una richiesta di preparazione per inizializzare una nuova istanza. Tuttavia, questi tentativi di rilevamento non funzionano sempre. Di conseguenza, potresti ricevere richieste di caricamento, anche se le richieste di attivazione sono attivate nell'app. Ad esempio, se l'app non gestisce traffico, la prima richiesta per l'app sarà sempre una richiesta di caricamento, non di richiesta.

Le richieste di preparazione utilizzano le ore di istanza come qualsiasi altra richiesta alla tua applicazione App Engine. Nella maggior parte dei casi in cui le richieste di preparazione sono abilitate, non noterai un aumento delle ore di istanza perché l'applicazione si inizializza semplicemente in una richiesta di preparazione anziché in una richiesta di caricamento. L'utilizzo delle ore di istanza può aumentare se decidi di eseguire più operazioni, come la pre-memorizzazione nella cache durante una richiesta di preparazione. Se imposti min_idle_instances su un valore superiore a 0, potresti ricevere richieste di preparazione all'avvio di tali istanze, che tuttavia rimarranno disponibili dopo tale data.

Abilitazione delle richieste di preparazione

Le richieste di preparazione vengono utilizzate dallo scheduler di App Engine, che controlla la scalabilità automatica delle istanze in base alla configurazione fornita dall'utente. Con le richieste di preparazione attivate, App Engine invia le richieste GET a /_ah/warmup. Puoi implementare gestori per questa richiesta affinché eseguano attività specifiche dell'applicazione, come la pre-memorizzazione nella cache dei dati delle applicazioni.

Lo scheduler avvia le istanze quando stabilisce che sono necessarie più istanze. Le richieste di avvio potrebbero comparire nei log anche se sono disabilitate perché lo strumento di pianificazione le utilizza per avviare le istanze.

Non è garantito che le chiamate di preparazione siano chiamate. In alcune situazioni, invece, vengono inviate richieste di caricamento: ad esempio, se l'istanza è la prima avviata o se c'è un forte incremento del traffico. Tuttavia, ci sarà un tentativo da eseguire per inviare richieste a istanze già pronte se le richieste di preparazione sono attivate.

Per abilitare le richieste di preparazione, aggiungi l'elemento warmup sotto l'istruzione inbound_services nel tuo file app.yaml, ad esempio:

inbound_services:
- warmup

Creazione del gestore

Crea un gestore che elaborerà le richieste inviate a /_ah/warmup. Il gestore deve eseguire qualsiasi logica di preparazione necessaria per la tua app.