Comando del perfilador de base de datos en tiempo real de Firebase
Para generar un informe de la velocidad y el uso de ancho de banda para las operaciones en su instancia de Realtime Database, use el siguiente comando:
firebase database:profile
Opciones de bandera | Descripción |
---|---|
-h, --help | Información de uso de salida. |
-o, --output FILENAME | Guarde la salida en el archivo especificado. |
-i, --input FILENAME | Genere el informe basándose en el archivo especificado en lugar de transmitir registros desde el servidor. |
-d, --duration SECONDS | Recopile información de uso de la base de datos durante la cantidad de segundos especificada. |
--raw | Genere las estadísticas sin procesar recopiladas como JSON delimitado por nuevas líneas. |
Tipos de operación
conexión concurrente
Esta operación refleja conexiones en tiempo real a la base de datos (por ejemplo, cuando un nuevo cliente se conecta a través de un SDK). Las conexiones RESTful no se reflejan en las operaciones de conexión simultánea.
{ "name": "concurrent-connect", "timestamp": 1484776334900 }
desconexión concurrente
Las desconexiones simultáneas reflejan una conexión que se ha desconectado de la base de datos (por ejemplo, cuando un cliente se desconecta o cierra sesión).
{ "name": "concurrent-disconnect", "timestamp": 1484776341844 }
escritura en tiempo real
Escribir solicitudes desde conexiones en tiempo real. Por ejemplo, operaciones set()
y push()
para clientes web. Las solicitudes de eliminación también se cuentan como operaciones realtime-write
y reflejan escrituras de 0 bytes.
{ "allowed": true, // If security rules allow the operation "bytes": 1, "millis": 2, "name": "realtime-write", "path": [ "foo" ], "timestamp": 1484776538763 }
transacción en tiempo real
Este tipo de operación incluye transacciones realizadas a través de conexiones en tiempo real. Las transacciones repetidas pueden ser el resultado de intentos y reintentos fallidos.
{ "allowed": true, "bytes": 20, "millis": 2, "name": "realtime-transaction", "path": [ "foo" ], "timestamp": 1484776854610 }
actualización en tiempo real
Estas operaciones de actualización en tiempo real reflejan sobrescrituras de datos específicos, no las operaciones de escritura más generales en realtime-write
.
{ "allowed": true, "bytes": 5, "millis": 2, "name": "realtime-update", "path": [ "foo" ], "timestamp": 1484776538769 }
oyente-escucha
Estas operaciones reflejan la solicitud inicial de datos en una ubicación específica por parte de un cliente. Por ejemplo, los métodos on()
o once()
para clientes web.
{ "allowed": true, "bytes": 0, "millis": 26, "name": "listener-listen", "path": [ "foo" ], "querySet": [], "timestamp": 1484776335024, "unIndexed": false }
oyente-transmisión
Esta operación cubre los datos enviados desde el servidor a todos y cada uno de los clientes que están escuchando en una ubicación determinada después de cada operación de escritura y actualización. El cambio de los datos conduce a una operación de difusión. Sin embargo, es posible que vea 0 actualizaciones si no hay ningún cliente escuchando.
{ "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 }
oyente-deja de escuchar
Estas operaciones reflejan clientes de escucha que cierran sesión o dejan de escuchar a través de los métodos de desconexión (por ejemplo, off()
para web o removeAllObservers
para iOS).
{ "name": "listener-unlisten", "path": [ "foo" ], "timestamp": 1484776335044 }
descansar-leer
GET
solicitudes a través de la 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 }
descansar-escribir
Solicitudes PUT
y POST
a través de la API REST. Las solicitudes DELETE
reflejan operaciones rest-write
de 0 bytes.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-write", "path": [], "timestamp": 1484775917216 }
transacción-resto
Para un comportamiento similar a una transacción, utilice Solicitudes condicionales . La operación rest-transaction
captura solicitudes utilizando encabezados Etag
o if-match
.
{ "allowed": true, "bytes": 13, "millis": 116, "name": "rest-transaction", "path": [], "timestamp": 1484775917216 }
actualización de descanso
Las actualizaciones a través de la API REST reflejan las solicitudes PATCH
.
{ "allowed": true, "bytes": 5, "millis": 11, "name": "rest-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
en-desconectar-poner
Estas operaciones reflejan la adición de oyentes onDisconnect
para escribir operaciones. Por ejemplo, cuando usas onDisconnect().setValue()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-put", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
actualización al desconectarse
Estas operaciones reflejan la adición de oyentes onDisconnect
a las operaciones de actualización. Por ejemplo, cuando usas onDisconnect().updateChildren()
.
{ "allowed": true, "bytes": 4, "millis": 2, "name": "on-disconnect-update", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
al desconectar-cancelar
Estas operaciones reflejan la eliminación de los oyentes onDisconnect. Por ejemplo, cuando usas onDisconnect().set().cancel()
.
{ "millis": 2, "name": "on-disconnect-cancel", "path": [ "baz", "mar" ], "timestamp": 1484775969930 }
funcionamiento al desconectar
Estas operaciones reflejan la activación de los oyentes onDisconnect
. Cuando un cliente en tiempo real se desconecta después de agregar al menos un oyente onDisconnect
, el generador de perfiles registra una única operación run-on-disconnect
para reflejar los bytes agregados y el tiempo de todos los oyentes onDisconnect
activados.
{ "bytes": 4, "millis": 2, "name": "run-on-disconnect", "timestamp": 1484775969930 }