Profila il tuo database

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Misura le prestazioni del tuo database Firebase Realtime con lo strumento di profilatura del database, integrato nella CLI di Firebase . Lo strumento Profiler registra tutte le attività nel database in un determinato periodo di tempo, quindi genera un rapporto dettagliato. Utilizza il rapporto dettagliato per risolvere i problemi relativi alle prestazioni del database, individuare le aree problematiche e ridurre le query non indicizzate.

Costruisci un profilo

  1. Prima di iniziare a profilare il tuo database Firebase Realtime, assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di Firebase e di averla inizializzata per il database e il progetto che desideri profilare. Tieni presente che per creare un profilo devi essere un editore o un proprietario di quel progetto.

  2. Avviare la profilatura del database con il comando seguente:

    firebase database:profile
    Il profiler visualizza un messaggio di stato mentre registra le operazioni dal database e crea il profilo.

  3. Premere Invio per completare il profilo e visualizzare i risultati.

Interpreta i tuoi risultati

Lo strumento Profiler aggrega i dati raccolti sulle operazioni del database e visualizza i risultati in tre categorie principali: velocità , larghezza di banda e query non indicizzate .

Velocità

Il rapporto sulla velocità misura il tempo di risposta del server (in millisecondi) per ogni tipo di operazione. Tuttavia, la velocità misurata nel rapporto sulla velocità potrebbe non riflettere effettivamente l'esperienza degli utenti finali sulla velocità. Diversi fattori, comprese le condizioni della rete, possono aggiungere latenza sul lato client.

Il rapporto sulla velocità include le seguenti proprietà:

  • Percorso: il percorso nel database in cui si sono verificate le operazioni. Se sono presenti più di 25 nodi figlio, lo strumento Profiler li comprime in un percorso padre e aggiunge un indicatore $wildcard . Potresti vedere la directory principale del tuo database nel rapporto, rappresentata da una barra / .
  • Conteggio: il numero di operazioni che si sono verificate nel percorso specificato.
  • Velocità di esecuzione media: il tempo medio impiegato dal server per eseguire la logica aziendale necessaria per gestire il particolare tipo di operazione in quel percorso. L'intervallo di tempo qui misurato inizia dopo quello misurato dal "Tempo di attesa medio" descritto di seguito.
  • Tempo medio di attesa: il tempo medio trascorso dalle richieste in coda prima di essere eseguite. Questo ritardo è comune a tutte le richieste avviate dal client. La latenza totale della richiesta lato server è all'incirca la somma del tempo di attesa della richiesta e della velocità di esecuzione.
  • Autorizzazione negata: il numero di operazioni nel percorso specificato che sono state bloccate dalle regole del database Firebase sul database.
Rapporto sulla velocità per tipo di operazione
Leggi Velocità di esecuzione Il tempo di risposta del server per le richieste dei client di leggere i dati dal database. Il tempo di esecuzione della lettura generalmente varia in base alla quantità di dati letti, ma anche alcune letture di piccole dimensioni possono essere ritardate dal precaricamento della cache.
Velocità di esecuzione della scrittura Il tempo di risposta del server per le richieste dei client di scrivere dati nel database. Scrivere scale di tempo di esecuzione con la quantità di dati da scrivere.
Collega velocità di esecuzione Il tempo di risposta del server per le richieste da stabilire ai client del database. La latenza per le richieste di connessione è dominata dalla contabilità lato server in memoria correlata alla gestione della connessione.
Velocità di esecuzione della trasmissione

La quantità di tempo impiegata dal server per distribuire i dati ai client in ascolto del percorso specificato per gli aggiornamenti in tempo reale.

La proprietà Conteggio nel rapporto sulla velocità di trasmissione aggrega il numero di trasmissioni avvenute, non il numero di client che hanno ricevuto le informazioni. Ad esempio, se 10 client erano in ascolto su un determinato percorso e il server trasmetteva un aggiornamento a tutti i 10 client, il conteggio delle trasmissioni riflette solo 1 trasmissione, anche se 10 client hanno ricevuto i dati.

La proprietà Autorizzazione negata non è inclusa nel rapporto Velocità di trasmissione.

Larghezza di banda

Il rapporto sulla larghezza di banda fornisce informazioni dettagliate sulla quantità di dati consumata dal database nelle operazioni in entrata e in uscita. Tuttavia, non dovresti utilizzare il rapporto larghezza di banda per stimare la fatturazione, perché non include la larghezza di banda utilizzata per altre operazioni, come la profilazione del database. Il rapporto sulla larghezza di banda stima approssimativamente la dimensione del carico utile dei dati consumati dalle operazioni di lettura, scrittura e trasmissione da e verso il database. È uno strumento che misura le prestazioni, non uno che prevede la fatturazione.

Il rapporto larghezza di banda include le seguenti proprietà:

  • Percorso: il percorso nel database in cui si sono verificate le operazioni. Se sono presenti più di 25 nodi figlio, lo strumento Profiler li comprime in un percorso padre.

  • Totale: il totale dei byte in uscita o in entrata utilizzati in tutte le operazioni nel percorso specificato.

  • Conteggio: il numero di operazioni che si sono verificate nel percorso specificato.

  • Media: il numero medio di byte scaricati o caricati attraverso le operazioni nel percorso specificato (byte/scrittura o byte/lettura).

Rapporto sulla larghezza di banda
Byte scaricati Dati consumati tramite operazioni di lettura e trasmissione inviate tramite gli SDK client e l'API REST.
Byte caricati Dati consumati tramite richieste di scrittura in arrivo nel server di database. Le eliminazioni vengono visualizzate come scritture con 0 byte in arrivo.

Query non indicizzate

Le query non indicizzate possono essere costose, perché i client scaricano tutti i dati in una posizione e quindi eseguono query su di essi. Ciò consuma più larghezza di banda del necessario. Risolvi il maggior numero possibile di query non indicizzate per ottimizzare le prestazioni del database.

Il rapporto Query non indicizzate visualizza le seguenti proprietà:

  • Percorso: il percorso nel database in cui si sono verificate le query non indicizzate.
  • Indice: la regola da aggiungere per risolvere le query non indicizzate. Scopri di più sull'indicizzazione in Indicizza i tuoi dati .
  • Conteggio: il numero di query non indicizzate che si sono verificate nel percorso specificato.

Profilazione avanzata

Per vedere tutte le operazioni che il tuo database sta gestendo, usa il flag --raw quando esegui il profilo del tuo database, come segue:

firebase database:profile --raw

L'output non elaborato include anche informazioni sul client per ogni operazione, come stringhe userAgent e indirizzi IP. Scopri di più sulle diverse operazioni profilate nel tuo database Firebase Realtime in Tipi di operazioni del database Firebase Realtime .

Lo strumento Profiler: non uno strumento di fatturazione

Non utilizzare lo strumento Profiler per stimare il costo della larghezza di banda. Lo strumento Profiler ha lo scopo di fornire un quadro generale delle prestazioni del database, per aiutarti a monitorare le operazioni e risolvere i problemi, non per stimare la fatturazione. Non tiene conto del traffico di rete, registra solo una stima dei dati dell'applicazione inviati nelle risposte.

Di seguito sono riportati alcuni esempi comuni di traffico di rete fatturato da Firebase che non sono inclusi nel profilo del database:

  • Sovraccarico del protocollo: per stabilire e mantenere una sessione è necessario del traffico aggiuntivo tra il server ei client. A seconda del protocollo sottostante, questo traffico potrebbe includere: sovraccarico del protocollo in tempo reale di Firebase Realtime Database, sovraccarico WebSocket e sovraccarico dell'intestazione HTTP. Ogni volta che viene stabilita una connessione, questo sovraccarico, combinato con qualsiasi sovraccarico di crittografia SSL, contribuisce ai costi di connessione. Sebbene in genere non si tratti di una grande quantità di larghezza di banda, può essere notevole se i tuoi carichi utili sono piccoli o se effettui connessioni brevi e frequenti.
  • Sovraccarico di crittografia SSL: c'è un costo associato al sovraccarico di crittografia SSL necessario per le connessioni sicure. In media, questo costo è di circa 3,5 KB per l'handshake iniziale e di circa 40 miliardi per le intestazioni dei record TLS su ciascun messaggio in uscita. Per la maggior parte delle app, questa è una piccola percentuale della tua fattura. Tuttavia, questa potrebbe diventare una percentuale elevata se il tuo caso specifico richiede molti handshake SSL. Ad esempio, i dispositivi che non supportano i ticket di sessione TLS potrebbero richiedere un numero elevato di handshake di connessione SSL.

Ulteriori informazioni sulla comprensione e la stima della bolletta .