Comando profiler di Firebase Realtime Database
Per generare un report sull'utilizzo della velocità e della larghezza di banda per le operazioni nell'istanza di Realtime Database, utilizza il seguente comando:
firebase database:profile
Opzioni per i flag | Descrizione |
---|---|
-h, --help |
Genera informazioni sull'utilizzo. |
-o, --output FILENAME |
Salva l'output nel file specificato. |
-i, --input FILENAME |
Genera il report in base al file specificato, anziché trasmettere i log dal server. |
-d, --duration SECONDS |
Raccogli informazioni sull'utilizzo del database per il numero di secondi specificato. |
--raw |
Restituisce come output le statistiche non elaborate raccolte come JSON delimitato da una nuova riga. |
Tipi di operazioni
connessione-simultanea
Questa operazione riflette le connessioni in tempo reale al database, ad esempio quando un nuovo client si connette tramite un SDK. Le connessioni RESTful non si riflettono nelle operazioni di connessione simultanea.
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
disconnetti-contemporaneamente
Le disconnessioni simultanee riflettono una connessione disconnessa dal database (ad esempio, quando un client si disconnette o si disconnette).
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
realtime-write
Richieste di scrittura da connessioni in tempo reale. Ad esempio, le operazioni set()
e push()
per i client web. Le richieste di eliminazione vengono conteggiate anche come operazioni realtime-write
e riflettono le scritture di 0 byte.
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
realtime-transaction
Questo tipo di operazione include le transazioni condotte tramite connessioni in tempo reale. Le transazioni ripetute possono essere il risultato di tentativi non riusciti e nuovi tentativi.
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
aggiornamento-in-tempo reale
Queste operazioni in tempo reale per gli aggiornamenti riflettono la sovrascrittura di dati specifici, non le operazioni di scrittura più generali in realtime-write
.
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
listener-listen
Queste operazioni riflettono la richiesta iniziale di dati in una località specifica da
un cliente. Ad esempio, i metodi on()
o once()
per i client web.
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
ascoltatore-trasmissione
Questa operazione riguarda i dati inviati dal server a tutti i client in ascolto in una determinata posizione dopo ogni operazione di scrittura e aggiornamento. La modifica dei dati porta a un'operazione di trasmissione. Tuttavia, potresti vedere 0 aggiornamenti se non ci sono client in ascolto.
{ "bytes": 56, // Total bytes sent across clients "clientsUpdated": 3, // This may be 0 if no clients are listening "millis": 17, "name": "listener-broadcast", "path": [ "baz", "mar" ], "timestamp": 1484775969928 }
listener-unlisten
Queste operazioni riflettono i client di ascolto che si disconnettono o interrompono l'ascolto tramite i metodi di scollegamento (ad esempio, off()
per il web o removeAllObservers
per iOS).
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
leggi a riposo
GET
mediante l'API REST.
{ "allowed": true, "bytes": 348, // This would be 0 if the read data was null "millis": 26, "name": "rest-read", "path": [], "querySet": [ { "default": true, "endIndexValue": "[MAX_NAME]", "equality": false, "index": {}, "limit": null, "range": false, "simpleLimit": false, "startIndexValue": "[MIN_NAME]", "viewFrom": null } ], "timestamp": 1484775747416 }
riposo-scrittura
Richieste PUT
e
POST
tramite l'API REST.
Le richieste DELETE
riflettono
operazioni rest-write
a 0 byte.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
transazione-rest
Per un comportamento simile a quello delle transazioni, utilizza le richieste condizionali.
L'operazione rest-transaction
acquisisce le richieste utilizzando le intestazioni Etag
o if-match
.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
aggiornamento-rest
Gli aggiornamenti tramite l'API REST riflettono le richieste PATCH
.
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-put
Queste operazioni riflettono l'aggiunta di listener onDisconnect
per le operazioni di scrittura. Ad esempio, quando usi onDisconnect().setValue()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-update
Queste operazioni riflettono l'aggiunta di listener onDisconnect
per l'aggiornamento delle operazioni. Ad esempio, quando usi onDisconnect().updateChildren()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
all'annullamento della connessione
Queste operazioni riflettono la rimozione dei listener onDisconnetti.
Ad esempio, quando usi onDisconnect().set().cancel()
.
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
run-on-disconnect
Queste operazioni riflettono l'attivazione dei listener onDisconnect
.
Quando un client in tempo reale si disconnette dopo aver aggiunto almeno un listener onDisconnect
, il profiler registra una singola operazione run-on-disconnect
per riflettere i byte e l'ora aggregati di tutti i listener onDisconnect
attivati.
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }