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
}