Commande du profileur Firebase Realtime Database
Pour générer un rapport sur l'utilisation de la vitesse et de la bande passante pour les opérations de votre instance Realtime Database, utilisez la commande suivante:
firebase database:profile
Options d'indicateur | Description |
---|---|
-h, --help |
Générez des informations sur l'utilisation. |
-o, --output FILENAME |
Enregistrez le résultat dans le fichier spécifié. |
-i, --input FILENAME |
Générez le rapport en fonction du fichier spécifié au lieu de diffuser les journaux à partir du serveur. |
-d, --duration SECONDS |
Collectez les informations sur l'utilisation de la base de données pendant le nombre de secondes spécifié. |
--raw |
Générez les statistiques brutes collectées au format JSON délimité par un retour à la ligne. |
Types d'opération
connexion simultanée
Cette opération reflète les connexions en temps réel à la base de données (par exemple, lorsqu'un nouveau client se connecte via un SDK). Les connexions RESTful ne sont pas reflétées dans les opérations de connexion simultanée.
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
déconnexion simultanée
Les déconnexions simultanées reflètent une connexion qui s'est déconnectée de la base de données (par exemple, lorsqu'un client se déconnecte ou se connecte.
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
realtime-write
Requêtes d'écriture provenant de connexions en temps réel Par exemple, les opérations set()
et push()
pour les clients Web. Les requêtes de suppression sont également comptabilisées comme des opérations realtime-write
et reflètent les écritures de 0 octet.
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
realtime-transaction
Ce type d'opération inclut les transactions effectuées via des connexions en temps réel. Les transactions répétées peuvent être le résultat d'échecs et de nouvelles tentatives.
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
mise à jour en temps réel
Ces opérations de mise à jour en temps réel reflètent la surcharge de données spécifiques, et non les opérations d'écriture plus générales dans realtime-write
.
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
listener-listen
Ces opérations reflètent la demande initiale de données d'un client à un emplacement spécifique. Par exemple, les méthodes on()
ou once()
pour les clients Web.
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
diffusion-auditeur
Cette opération couvre les données envoyées par le serveur à tous les clients qui écoutent à un emplacement donné après chaque opération d'écriture et de mise à jour. La modification des données entraîne une opération de diffusion. Toutefois, vous pouvez voir 0 mise à jour si aucun client ne vous écoute.
{ "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
Ces opérations reflètent les clients d'écoute qui se terminent ou arrêtent l'écoute via les méthodes de dissociation (par exemple, off()
pour le Web ou removeAllObservers
pour iOS).
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
reste lu
Requêtes GET
via 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 }
écriture-reste
Requêtes PUT
et POST
via l'API REST.
Les requêtes DELETE
reflètent les opérations rest-write
de 0 octet.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
transaction au repos
Pour un comportement de type transaction, utilisez des requêtes conditionnelles.
L'opération rest-transaction
capture les requêtes à l'aide des en-têtes Etag
ou if-match
.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
mise à jour REST
Les mises à jour effectuées via l'API REST reflètent les requêtes PATCH
.
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-put
Ces opérations reflètent l'ajout d'écouteurs onDisconnect
pour les opérations d'écriture. Par exemple, lorsque vous utilisez onDisconnect().setValue()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
on-disconnect-update
Ces opérations reflètent l'ajout d'écouteurs onDisconnect
pour mettre à jour les opérations. Par exemple, lorsque vous utilisez onDisconnect().updateChildren()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
Annulation de la déconnexion
Ces opérations reflètent la suppression des écouteurs onDéconnecter.
Par exemple, lorsque vous utilisez onDisconnect().set().cancel()
.
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
run-on-disconnect
Ces opérations reflètent le déclenchement des écouteurs onDisconnect
.
Lorsqu'un client en temps réel se déconnecte après avoir ajouté au moins un écouteur onDisconnect
, le profileur enregistre une seule opération run-on-disconnect
pour refléter les octets et l'heure agrégés de tous les écouteurs onDisconnect
déclenchés.
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }