Firebase Realtime Database-Profiler-Befehl
Um einen Bericht über die Geschwindigkeit und Bandbreitennutzung für Vorgänge in Ihrer Realtime Database-Instanz zu erstellen, verwenden Sie den folgenden Befehl:
firebase database:profile
Flag-Optionen | Beschreibung |
---|---|
-h, --help | Nutzungsinformationen ausgeben. |
-o, --output FILENAME | Speichern Sie die Ausgabe in der angegebenen Datei. |
-i, --input FILENAME | Generieren Sie den Bericht basierend auf der angegebenen Datei und nicht auf Stream-Protokollen vom Server. |
-d, --duration SECONDS | Sammeln Sie Informationen zur Datenbanknutzung für die angegebene Anzahl von Sekunden. |
--raw | Geben Sie die gesammelten Rohstatistiken als durch Zeilenumbrüche getrenntes JSON aus. |
Operationsarten
gleichzeitige Verbindung
Dieser Vorgang spiegelt Echtzeitverbindungen zur Datenbank wider (z. B. wenn ein neuer Client eine Verbindung über ein SDK herstellt). RESTful-Verbindungen werden in gleichzeitigen Verbindungsvorgängen nicht berücksichtigt.
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
gleichzeitige Trennung
Concurrent-Disconnects spiegeln eine Verbindung wider, die von der Datenbank getrennt wurde (z. B. wenn ein Client die Verbindung trennt oder sich abmeldet).
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
Echtzeit-Schreiben
Schreibanfragen von Echtzeitverbindungen. Zum Beispiel set()
und push()
Operationen für Web-Clients. Löschanfragen werden auch als realtime-write
gezählt und spiegeln Schreibvorgänge von 0 Byte wider.
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
Echtzeit-Transaktion
Dieser Vorgangstyp umfasst Transaktionen, die über Echtzeitverbindungen durchgeführt werden. Wiederholte Transaktionen können das Ergebnis fehlgeschlagener Versuche und Wiederholungsversuche sein.
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
Echtzeit-Update
Diese Echtzeitvorgänge für Aktualisierungen spiegeln das Überschreiben bestimmter Daten wider, nicht die allgemeineren Schreibvorgänge in realtime-write
.
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
Zuhörer-zuhören
Diese Vorgänge spiegeln die anfängliche Anforderung von Daten an einem bestimmten Standort durch einen Client wider. Zum Beispiel die Methoden on()
oder once()
für Webclients.
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
Hörersendung
Dieser Vorgang umfasst die Daten, die nach jedem Schreib- und Aktualisierungsvorgang vom Server an alle Clients gesendet werden, die an einem bestimmten Standort lauschen. Die Änderung der Daten führt zu einem Broadcast-Vorgang. Allerdings werden möglicherweise 0 Updates angezeigt, wenn keine Clients zuhören.
{ "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 }
Zuhörer-nicht zuhören
Diese Vorgänge spiegeln Überwachungsclients wider, die sich über die Detach-Methoden abmelden oder die Überwachung beenden (z. B. off()
für Web oder removeAllObservers
für iOS).
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
Rest-Lesen
GET
Anfragen über die REST-API.
{ "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 }
Rest-Schreiben
PUT
und POST
Anfragen über die REST-API. DELETE
Anfragen spiegeln rest-write
von 0 Bytes wider.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
Rest-Transaktion
Für transaktionsähnliches Verhalten verwenden Sie bedingte Requests . Der rest-transaction
erfasst Anforderungen mithilfe Etag
oder if-match
Headern.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
Rest-Update
Aktualisierungen über die REST-API spiegeln PATCH
Anfragen wider.
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-put
Diese Vorgänge spiegeln das Hinzufügen von onDisconnect
Listenern zu Schreibvorgängen wider. Zum Beispiel, wenn Sie onDisconnect().setValue()
verwenden.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
On-Disconnect-Update
Diese Vorgänge spiegeln das Hinzufügen von onDisconnect
Listenern zu Aktualisierungsvorgängen wider. Zum Beispiel, wenn Sie onDisconnect().updateChildren()
verwenden.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-cancel
Diese Vorgänge spiegeln das Entfernen von onDisconnect-Listenern wider. Zum Beispiel, wenn Sie onDisconnect().set().cancel()
verwenden.
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
Nachlauf-Trennung
Diese Vorgänge spiegeln die Auslösung von onDisconnect
Listenern wider. Wenn ein Echtzeit-Client die Verbindung trennt, nachdem er mindestens einen onDisconnect
Listener hinzugefügt hat, zeichnet der Profiler einen einzelnen run-on-disconnect
Vorgang auf, um die aggregierten Bytes und die Zeit aller ausgelösten onDisconnect
Listener widerzuspiegeln.
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }