Configurazione delle richieste di warmup per migliorare le prestazioni

Puoi utilizzare le richieste di riscaldamento per ridurre la latenza di richieste e risposte durante il periodo in cui il codice dell'app viene caricato in un'istanza appena creata.

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

  • Quando esegui nuovamente il deployment di una versione dell'app.
  • Quando vengono create nuove istanze a causa del carico proveniente da richieste che superano la capacità del set attuale di istanze in esecuzione.
  • Durante la manutenzione e le riparazioni dell'infrastruttura sottostante o dell'hardware fisico.

Il caricamento del codice dell'app in una nuova istanza può comportare il caricamento delle richieste. Il caricamento delle richieste può comportare un aumento della latenza delle richieste per gli utenti, ma puoi evitarlo utilizzando le richieste di preparazione. Le richieste di riscaldamento caricano il codice della tua app in una nuova istanza prima che le richieste attive raggiungano l'istanza in questione.

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

Le richieste di riscaldamento utilizzano le ore di istanza come qualsiasi altra richiesta all'applicazione App Engine. Nella maggior parte dei casi in cui le richieste di warmup sono abilitate, non noterai un aumento delle ore di istanza perché l'applicazione sta semplicemente inizializzando una richiesta di warmup invece che una richiesta di caricamento. L'utilizzo dell'istanza può aumentare se decidi di svolgere più lavoro, ad esempio prememorizzare nella cache durante una richiesta di warmup. Se imposti min_idle_instances su un valore superiore a 0, potresti riscontrare richieste di riscaldamento al primo avvio di queste istanze, ma rimarranno disponibili dopo questo intervallo di tempo.

Abilitazione delle richieste di riscaldamento in corso...

Le richieste di riscaldamento 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 riscaldamento abilitate, App Engine invia GET richieste a /_ah/warmup. Puoi implementare gestori per questa richiesta per eseguire attività specifiche dell'applicazione, ad esempio la pre-memorizzazione nella cache dei dati delle applicazioni.

Lo scheduler avvia le istanze quando determina che sono necessarie più istanze. Le richieste di riscaldamento potrebbero essere visualizzate nei log anche se sono disabilitate perché lo scheduler le utilizza per avviare le istanze.

Tieni presente che non è garantito che le richieste di riscaldamento vengano chiamate. In alcune situazioni, vengono invece inviate le richieste di caricamento, ad esempio se l'istanza è la prima ad essere avviata o se il traffico è aumentato in modo significativo. Tuttavia, se le richieste di warmup sono abilitate, ci sarà un tentativo "best effort" di inviare richieste a istanze già in fase di preparazione.

Per abilitare le richieste di warmup, aggiungi l'elemento warmup sotto l'istruzione inbound_services nel 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 riscaldamento necessaria all'app.