Gestione delle risorse dell'app

App Engine genera report sull'utilizzo relativi al delle prestazioni e dell'utilizzo delle risorse. Di seguito sono elencate le potenziali strategie per una gestione più efficiente delle risorse. Per ulteriori informazioni, consulta la pagina relativa ai prezzi.

Visualizzazione dei rapporti di utilizzo

Quando valuti le prestazioni delle applicazioni, dovresti controllare il numero di istanze in esecuzione dell'applicazione e il modo in cui consuma risorse.

Visualizzare i report sull'utilizzo delle dashboard

Visualizza la pagina Istanze

Le sezioni seguenti suggeriscono alcune strategie per la gestione delle risorse.

Gestione della scalabilità delle istanze dinamiche

Riduzione della latenza in corso...

La latenza dell'applicazione influisce sul numero di istanze necessarie per gestire per via del traffico. Diminuendo la latenza, puoi ridurre il numero di istanze utilizzate gestire la tua applicazione. Cloud Trace è uno strumento utile per visualizzare i dati sulla latenza e capire le potenziali modifiche per ridurla.

Dopo aver utilizzato Cloud Trace per visualizzare la latenza, prova a eseguire alcune delle seguenti operazioni strategie per ridurre la latenza:

  • Aumentare la memorizzazione nella cache dei dati condivisi a cui si accede di frequente. Ecco un altro modo usare la memcache di App Engine. Inoltre, l'impostazione del traffico le intestazioni cache-control possono avere un impatto significativo sull'efficienza dei dati memorizzati nella cache da server e browser. Persino la memorizzazione nella cache per alcuni secondi hanno un impatto sull'efficienza con cui la tua applicazione gestisce il traffico. Le applicazioni Python dovrebbero inoltre utilizzare memorizzazione nella cache del runtime.
  • Utilizza App Engine Memcache in modo più efficiente: utilizza le chiamate batch per ottenere, impostare, eliminare e così via invece di una serie di singole chiamate. Valuta la possibilità di utilizzare l'API Memcache Async.
  • Utilizza le attività per la funzionalità non legata alla richiesta. Se la tua applicazione esegue operazioni che possono essere svolte oltre l'ambito di una richiesta rivolta all'utente, mettilo in un'attività! Invio di questo lavoro alla coda delle attività anziché attendere prima di restituire una risposta può ridurre significativamente per gli utenti. La coda di attività può quindi darti maggiore controllo velocità di esecuzione e facilitare il carico.
  • Utilizza Firestore in modalità Datastore (Datastore) in modo più efficiente - Vedi di seguito per maggiori dettagli.
  • Esecuzione di più chiamate di recupero URL in parallelo:
      .
    • Raggruppare più chiamate di recupero URL invece di gestirle individualmente all'interno delle singole richieste rivolte all'utente e un'attività offline in parallelo tramite il recupero asincrono di URL.
    • Utilizza l'API URL Fetch asincrona.
  • Per le sessioni HTTP, scrivi in modo asincrono.

Modifica le impostazioni del rendimento della scalabilità automatica

app.yaml di configurazione del deployment contiene diverse impostazioni che puoi utilizzare Regola il compromesso tra prestazioni e carico di risorse per una versione specifica della tua app. Per un elenco delle impostazioni di scalabilità automatica disponibili, consulta di scale. Guarda il video sulle nuove impostazioni dello scheduler di App Engine video per vedere gli effetti di queste impostazioni.

Abilita le richieste in parallelo in Python

Le istanze della tua applicazione possono gestire più richieste contemporaneamente in Python. Se attivi questa impostazione, verrà ridotto il numero di le istanze necessarie per gestire il traffico per la tua applicazione, devono essere protetti da thread affinché questa operazione funzioni correttamente. Leggi come utilizzare richieste in parallelo attivando threadsafe in app.yaml un file YAML.

Configurazione delle impostazioni delle code di attività

Le impostazioni predefinite per la coda di attività sono ottimizzate per le prestazioni. Con questi valori predefiniti, quando metti più attività in una coda contemporaneamente, queste è probabile che provochino l'avvio di nuove istanze di frontend. Ecco alcuni suggerimenti per come ottimizzare la coda di attività per risparmiare ore di istanza:

  • Imposta l'intestazione X-AppEngine-FailFast sulle attività non sensibili alla latenza. Questa intestazione indica allo scheduler di inviare immediatamente la richiesta in caso di l'istanza esistente non è disponibile. La coda di attività proverà di nuovo ed eseguirà il backoff finché un'istanza esistente non diventa disponibile per gestire la richiesta. Tuttavia, è importante notare che, quando vengono richieste Il set X-AppEngine-FailFast occupa le istanze esistenti, le richieste senza set di intestazioni può comunque causare l'avvio di nuove istanze.
  • Configura le impostazioni della coda di attività.
    • Se imposti la "tariffa" su un valore inferiore, la coda di attività di eseguire le tue attività a una velocità inferiore.
    • Se imposti "max_concurrent_requests" su un valore più basso, verranno eseguite contemporaneamente meno attività.
  • Se possibile, pubblicare contenuti statici

    Pubblicazione di contenuti statici in Python viene gestito da un'infrastruttura specializzata di App Engine, che non utilizza Ore di istanza. Se hai bisogno di impostare intestazioni personalizzate, utilizza la API Blobstore. L'effettiva pubblicazione della risposta BLOB non consuma ore di istanza.

    Gestione dello spazio di archiviazione delle applicazioni

    App Engine calcola i costi di archiviazione in base alle dimensioni delle entità in Datastore, le dimensioni degli indici Datastore, delle attività nella coda di attività e la quantità di dati archiviati nell'archivio BLOB. Ecco Ecco alcune cose che puoi fare per assicurarti di non archiviare più dati del necessario:

    • Elimina tutte le entità o i BLOB di cui l'applicazione non ha più bisogno.
    • Rimuovi eventuali indici non necessari, come descritto nella sezione Gestione di Datastore Utilizzo di seguito, per ridurre i costi di archiviazione dell'indice.

    Gestione dell'utilizzo di Datastore

    App Engine tiene conto del numero di operazioni eseguite Datastore. Di seguito sono riportate alcune strategie che possono comportare una riduzione Consumo di risorse Datastore e latenza più bassa per richieste a Datastore:

    • Il visualizzatore dati della console Google Cloud mostra il numero di operazioni di scrittura necessari per creare ogni entità nel tuo Datastore locale. Puoi utilizzare queste informazioni per comprendere il costo della scrittura di ciascuna entità. Consulta la sezione Comprensione dei costi di scrittura per informazioni su come interpretare questi dati.
    • Rimuovi gli indici non necessari, il che ridurrà lo spazio di archiviazione e la scrittura delle entità costi aggiuntivi. Usa il pulsante "Recupera indici" funzionalità per vedere quali indici sono definiti nell'applicazione. Puoi vedere quali indici vengono attualmente pubblicati per la tua applicazione nel Pagina di ricerca della console Google Cloud.
    • Quando progetti il tuo modello dei dati, potresti essere in grado di scrivere le query in modo da evitare del tutto gli indici personalizzati. Letto Query e indici documentazione per saperne di più su come App Engine genera indici di appartenenza.
    • Se possibile, sostituisci le proprietà indicizzate (che sono predefinite) con proprietà non indicizzate ( Python), il che riduce il numero di operazioni di scrittura di Datastore si inserisce un'entità. Attenzione, se in seguito decidi che devi poter per eseguire query sulla proprietà non indicizzata, dovrai non solo modificare per usare di nuovo le proprietà indicizzate, ma dovrai eseguire una mappa ridurre su tutte le entità per farne una reputazione.
    • A causa dei miglioramenti apportati allo strumento di pianificazione delle query di Datastore delle versioni 1.5.2 e 1.5.3 di App Engine, ora le tue query potrebbero richiedere meno indici rispetto al passato. Anche se puoi scegliere di conservare indici personalizzati per motivi legati alle prestazioni, potresti riuscire a eliminare altri, riducendo i costi di archiviazione e scrittura delle entità.
    • Riconfigura il modello dei dati in modo da poter sostituire le query con il recupero per chiave il che è più economico ed efficiente.
    • Se possibile, utilizza query basate solo su chiavi anziché query di entità.
    • Per ridurre la latenza, sostituisci più entità get() con un batch get().
    • Utilizza i cursori Datastore per l'impaginazione anziché l'offset.
    • Carica in contemporanea più RPC di Datastore tramite l'API datastore asinc.

    Nota: le operazioni Datastore ridotte includono chiamate per l'allocazione ID o query basate solo su chiavi di Datastore. Consulta le la pagina dei prezzi per ulteriori informazioni sui costi.

    Gestione della larghezza di banda

    Per ridurre la larghezza di banda in uscita, puoi imposta l'intestazione Cache-Control appropriata nelle risposte e stabilisci tempi di scadenza ragionevoli per i file statici. L'utilizzo di intestazioni Cache-Control pubbliche in questo modo consentirà tra i server proxy e i server browser per memorizzare nella cache le risposte per un periodo di tempo.

    La larghezza di banda in entrata è più difficile da controllare, poiché si tratta della quantità i dati inviati dagli utenti alla tua app. Tuttavia, puoi utilizzare regole firewall di App Engine, per consentire o limitare gli intervalli di indirizzi IP e subnet.

    Gestione di altre risorse

    Una delle migliori strategie per verificare l'utilizzo dell'API Email è utilizzare Appstats per rendere assicurati di non effettuare più chiamate del necessario. È sempre una buona idea realizzare Assicurati di controllare i tassi di errore e di verificare eventuali chiamate non valide che potresti creare. In alcuni casi potrebbe essere possibile rilevare queste chiamate in anticipo.