Misura le prestazioni di Firebase Realtime Database con lo strumento di profiler del database integrato nell'interfaccia a riga di comando Firebase. Lo strumento di profilazione registra tutta la attività nel database in un determinato periodo di tempo, quindi genera un report dettagliato. Utilizza il report dettagliato per risolvere i problemi relativi alle prestazioni del database, individuare le aree problematiche e ridurre le query non indicizzate.
Creare un profilo
Prima di iniziare a creare il profilo di Firebase Realtime Database, assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando Firebase e di averla inizializzata per il database e il progetto di cui vuoi creare il profilo. Tieni presente che devi essere un editor o un proprietario del progetto per creare il profilo.
Avvia il profiling del database con il seguente comando:
Il profiler mostra un messaggio di stato durante la registrazione delle operazioni dal database e la creazione del profilo.firebase database:profile
Premi Invio per completare il profilo e visualizzare i risultati.
Interpreta i risultati
Lo strumento di profilazione aggrega i dati raccolti sulle operazioni del database e mostra i risultati in tre categorie principali: velocità, larghezza di banda e query non indicizzate.
Velocità
Il report Velocità misura il tempo di risposta del server (in millisecondi) per ogni tipo di operazione. Tuttavia, la velocità misurata nel report sulla velocità potrebbe non riflettere effettivamente la velocità sperimentata dagli utenti finali. Diversi fattori, tra cui le condizioni della rete, possono aggiungere latenza lato client.
Il report Velocità include le seguenti proprietà:
- Percorso:il percorso nel database in cui si sono verificate le operazioni. Se esistono più di 25 nodi secondari, lo strumento di profilazione li comprime in un percorso principale e aggiunge un indicatore
$wildcard
. Nel report potresti vedere la directory radice del database, rappresentata da una barra/
. - Conteggio:il numero di operazioni che si sono verificate nel percorso specificato.
- Velocità di esecuzione media:il tempo medio necessario al server per eseguire la logica di business necessaria per gestire il particolare tipo di operazione in quel percorso. L'intervallo di tempo misurato qui inizia dopo quello misurato dall'indicatore "Tempo in attesa medio" descritto di seguito.
- Tempo di attesa medio:il tempo medio che le richieste trascorrono in coda prima di essere eseguite. Questo ritardo è comune a tutte le richieste avviate dal client. La latenza totale della richiesta lato server è approssimativamente la somma del tempo di attesa e della velocità di esecuzione della richiesta.
- Autorizzazione negata:il numero di operazioni nel percorso specificato che sono state bloccate dalle regole del database Firebase nel tuo database.
Report sulla velocità per tipo di operazione | |
---|---|
Velocità di lettura | Il tempo di risposta del server per le richieste del client di leggere i dati dal database. Il tempo di esecuzione della lettura in genere varia in base alla quantità di dati in fase di lettura, ma anche alcune letture di piccole dimensioni possono essere ritardate dal pre-caricamento della cache. |
Velocità di esecuzione della scrittura | Il tempo di risposta del server per le richieste del client di scrivere dati nel database. Il tempo di esecuzione della scrittura varia in base alla quantità di dati scritti. |
Velocità di esecuzione di Connect | Il tempo di risposta del server per le richieste di connessione ai client di database. La latenza per le richieste di connessione è dominata dalla registrazione lato server in memoria relativa alla gestione delle connessioni. |
Velocità di esecuzione della trasmissione | Il tempo necessario al server per distribuire i dati ai client che ascoltano il percorso specificato per gli aggiornamenti in tempo reale. La proprietà Conteggio nel report Velocità di trasmissione aggrega il numero di trasmissioni effettuate, non il numero di client che hanno ricevuto le informazioni. Ad esempio, se 10 client erano in ascolto in un determinato percorso e il server ha trasmesso un aggiornamento a tutti e 10 i client, il conteggio delle trasmissioni riflette solo una trasmissione, anche se 10 client hanno ricevuto i dati. La proprietà Autorizzazione non concessa non è inclusa nel report Velocità di trasmissione. |
Larghezza di banda
Il report Bandwidth fornisce informazioni sulla quantità di dati consumati dal database nelle operazioni in entrata e in uscita. Tuttavia, non devi utilizzare il report Larghezza di banda per stimare la fatturazione, in quanto non include la larghezza di banda utilizzata per altre operazioni, come il profiling del database. Il report Larghezza di banda stima approssimativamente le dimensioni del payload dei dati consumati dalle operazioni di lettura, scrittura e trasmissione da e verso il database. Si tratta di uno strumento che misura il rendimento, non uno che prevede la fatturazione.
Il report Bandwidth include le seguenti proprietà:
Percorso:il percorso nel database in cui si sono verificate le operazioni. Se esistono più di 25 nodi secondari, lo strumento di profiler li comprime in un percorso principale.
Totale: i byte in uscita o in entrata totali 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 tra le operazioni nel percorso specificato (byte/scrittura o byte/lettura).
Report sulla larghezza di banda | |
---|---|
Byte scaricati | Dati utilizzati tramite operazioni di lettura e trasmissione inviati tramite gli SDK e l'API REST del client. |
Byte caricati | Dati consumati tramite richieste di scrittura in arrivo sul server di database. Le eliminazioni vengono visualizzate come scritture con 0 byte in In entrata. |
Query non indicizzate
Le query non indicizzate possono essere costose, perché i client scaricano tutti i dati in una posizione ed eseguono query su di essi. In questo modo viene utilizzata più larghezza di banda del necessario. Risolvi il maggior numero possibile di query non indicizzate per ottimizzare il rendimento del database.
Il report Query non indicizzate mostra 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 Indicizzare i dati.
- Conteggio:il numero di query non indicizzate che si sono verificate nel percorso specificato.
Profilazione avanzata
Per visualizzare tutte le operazioni gestite dal database, utilizza il flag --raw
quando profili il database, come segue:
firebase database:profile --raw
L'output non elaborato include anche le informazioni del cliente per ogni operazione, ad esempio stringhe userAgent
e indirizzi IP. Scopri di più sulle diverse operazioni
profilate nel tuo Firebase Realtime Database in Firebase Realtime Database Tipi di operazioni.
Strumento di profilazione: non è uno strumento di fatturazione
Non utilizzare lo strumento di profilazione per stimare il costo della larghezza di banda. Lo scopo dello strumento di analisi è fornire un quadro complessivo 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, ma 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 coperti dal profilo del database:
- Overhead del protocollo: è necessario un po' di traffico aggiuntivo tra il server e i client per stabilire e mantenere una sessione. A seconda del protocollo di base, questo traffico potrebbe includere: il sovraccarico del protocollo in tempo reale di Firebase Realtime Database, il sovraccarico di WebSocket e il sovraccarico dell'intestazione HTTP. Ogni volta che viene stabilita una connessione, questo overhead, combinato con l'eventuale overhead della crittografia SSL, contribuisce ai costi di connessione. Sebbene in genere non si tratti di una grande quantità di larghezza di banda, può essere significativa se i payload sono piccoli o se esegui connessioni brevi e frequenti.
- Overhead della crittografia SSL: è associato un costo all'overhead della crittografia SSL necessaria per le connessioni sicure. In media, questo costo è di circa 3, 5 KB per l'handshake iniziale e di circa 40 B per le intestazioni dei record TLS su ogni messaggio in uscita. Per la maggior parte delle app, si tratta di una piccola percentuale della fattura. Tuttavia, questa potrebbe diventare una percentuale elevata se la tua richiesta specifica 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.
Scopri di più su come comprendere e stimare la fattura.