Mida el rendimiento de su Firebase Realtime Database con la herramienta de generación de perfiles de base de datos, integrada en Firebase CLI . La herramienta de generación de perfiles registra toda la actividad en su base de datos durante un período de tiempo determinado y luego genera un informe detallado. Utilice el informe detallado para solucionar problemas con el rendimiento de su base de datos, detectar áreas problemáticas y reducir las consultas no indexadas.
Construye un perfil
Antes de comenzar a generar perfiles de Firebase Realtime Database, asegúrese de estar usando la última versión de Firebase CLI y de haberla inicializado para la base de datos y el proyecto que desea generar. Tenga en cuenta que debe ser editor o propietario de ese proyecto para crear el perfil.
Comience a crear perfiles de su base de datos con el siguiente comando:
firebase database:profile
El generador de perfiles muestra un mensaje de estado mientras registra las operaciones de su base de datos y crea el perfil.Presione Enter para completar el perfil y mostrar los resultados.
Interpreta tus resultados
La herramienta de generación de perfiles agrega los datos que recopila sobre las operaciones de su base de datos y muestra los resultados en tres categorías principales: velocidad , ancho de banda y consultas no indexadas .
Velocidad
El Informe de velocidad mide el tiempo de respuesta del servidor (en milisegundos) para cada tipo de operación. Sin embargo, es posible que la velocidad medida en el Informe de velocidad no refleje la velocidad que experimentan los usuarios finales. Diferentes factores, incluidas las condiciones de la red, pueden aumentar la latencia en el lado del cliente.
El Informe de velocidad incluye las siguientes propiedades:
- Ruta: La ruta en su base de datos donde ocurrieron las operaciones. Si hay más de 25 nodos secundarios, la herramienta de generación de perfiles los colapsa en una ruta principal y agrega un marcador
$wildcard
. Es posible que vea el directorio raíz de su base de datos en el informe, representado por una barra diagonal/
. - Recuento: el número de operaciones que ocurrieron en la ruta dada.
- Velocidad de ejecución promedio: el tiempo promedio que le toma al servidor ejecutar la lógica de negocios necesaria para manejar el tipo de operación particular en esa ruta. El intervalo de tiempo medido aquí comienza después del medido por el "Tiempo pendiente promedio" que se describe a continuación.
- Tiempo promedio pendiente: el tiempo promedio que las solicitudes pasan en cola antes de ser ejecutadas. Este retraso es común a todas las solicitudes iniciadas por el cliente. La latencia total de la solicitud del lado del servidor es aproximadamente la suma del tiempo pendiente de esa solicitud y la velocidad de ejecución.
- Permiso denegado: la cantidad de operaciones en la ruta indicada que fueron bloqueadas por las reglas de la base de datos de Firebase en su base de datos.
Informe de velocidad por tipo de operación | |
---|---|
Leer velocidad de ejecución | El tiempo de respuesta del servidor para las solicitudes de los clientes para leer datos de la base de datos. El tiempo de ejecución de la lectura generalmente aumenta con la cantidad de datos que se leen, pero incluso algunas lecturas pequeñas también pueden verse retrasadas por la captación previa de la caché. |
Velocidad de ejecución de escritura | El tiempo de respuesta del servidor para las solicitudes del cliente para escribir datos en la base de datos. El tiempo de ejecución de escritura se escala con la cantidad de datos que se escriben. | Conectar velocidad de ejecución | El tiempo de respuesta del servidor para solicitudes de establecimiento de clientes de bases de datos. La latencia de las solicitudes de conexión está dominada por la contabilidad del lado del servidor en memoria relacionada con la gestión de conexiones. |
Velocidad de ejecución de transmisión | La cantidad de tiempo que tarda el servidor en distribuir datos a los clientes que escuchan la ruta indicada para obtener actualizaciones en tiempo real. La propiedad Count en el Informe de velocidad de transmisión agrega la cantidad de transmisiones que ocurrieron, no la cantidad de clientes que recibieron la información. Por ejemplo, si 10 clientes estaban escuchando en una ruta determinada y el servidor transmitió una actualización a los 10 clientes, el recuento de transmisiones solo refleja 1 transmisión, aunque 10 clientes recibieron los datos. La propiedad Permiso denegado no se incluye en el informe Velocidad de transmisión. |
Banda ancha
El Informe de ancho de banda proporciona información sobre la cantidad de datos que consume su base de datos en las operaciones entrantes y salientes. Sin embargo, no debe utilizar el Informe de ancho de banda para estimar la facturación, ya que no incluye el ancho de banda utilizado para otras operaciones, como crear perfiles de su base de datos. El Informe de ancho de banda estima aproximadamente el tamaño de la carga útil de los datos consumidos por las operaciones de lectura, escritura y transmisión hacia y desde su base de datos. Es una herramienta que mide el desempeño, no una que pronostica la facturación.
El Informe de ancho de banda incluye las siguientes propiedades:
Ruta: La ruta en su base de datos donde ocurrieron las operaciones. Si hay más de 25 nodos secundarios, la herramienta de generación de perfiles los colapsa en una ruta principal.
Total: el total de bytes salientes o entrantes utilizados en todas las operaciones en la ruta indicada.
Recuento: el número de operaciones que ocurrieron en la ruta dada.
Promedio: el número promedio de bytes descargados o cargados entre operaciones en la ruta dada (bytes/escritura o bytes/lectura).
Informe de ancho de banda | |
---|---|
Bytes descargados | Datos consumidos a través de operaciones de lectura y transmisión enviados a través de los SDK del cliente y la API REST. |
Bytes cargados | Datos consumidos a través de solicitudes de escritura que ingresan al servidor de la base de datos. Las eliminaciones aparecen como escrituras con 0 bytes en entrada. |
Consultas no indexadas
Las consultas no indexadas pueden resultar costosas porque los clientes descargan todos los datos en una ubicación y luego realizan consultas sobre ellos. Esto consume más ancho de banda del necesario. Resuelva tantas consultas no indexadas como pueda para optimizar el rendimiento de su base de datos.
El informe Consultas no indexadas muestra las siguientes propiedades:
- Ruta: la ruta en su base de datos donde ocurrieron las consultas no indexadas.
- Índice: la regla que debes agregar para resolver las consultas no indexadas. Obtenga más información sobre la indexación en Indexar sus datos .
- Recuento: el número de consultas no indexadas que se produjeron en la ruta indicada.
Perfilado avanzado
Para ver todas las operaciones que maneja su base de datos, use el indicador --raw
cuando cree el perfil de su base de datos, de la siguiente manera:
firebase database:profile --raw
La salida sin procesar también incluye información del cliente para cada operación, como cadenas userAgent
y direcciones IP. Obtenga más información sobre las diferentes operaciones perfiladas en su Firebase Realtime Database en Tipos de operaciones de Firebase Realtime Database .
La herramienta de creación de perfiles: no es una herramienta de facturación
No utilice la herramienta de generación de perfiles para estimar el costo del ancho de banda. La herramienta de generación de perfiles está destinada a brindarle una imagen general del rendimiento de su base de datos, para ayudarlo a monitorear las operaciones y solucionar problemas, no a estimar la facturación. No tiene en cuenta el tráfico de la red, sólo registra una estimación de los datos de la aplicación enviados en las respuestas.
Los siguientes son algunos ejemplos comunes de tráfico de red facturado por Firebase que no están cubiertos en tu perfil de base de datos:
- Sobrecarga de protocolo: es necesario algo de tráfico adicional entre el servidor y los clientes para establecer y mantener una sesión. Según el protocolo subyacente, este tráfico puede incluir: sobrecarga del protocolo en tiempo real de Firebase Realtime Database, sobrecarga de WebSocket y sobrecarga del encabezado HTTP. Cada vez que se establece una conexión, esta sobrecarga, combinada con cualquier sobrecarga de cifrado SSL, contribuye a los costos de conexión. Aunque normalmente no se trata de una gran cantidad de ancho de banda, puede ser sustancial si sus cargas útiles son pequeñas o si realiza conexiones cortas y frecuentes.
- Gastos generales de cifrado SSL: existe un costo asociado con los gastos generales de cifrado SSL necesarios para conexiones seguras. En promedio, este costo es de aproximadamente 3,5 KB para el protocolo de enlace inicial y aproximadamente 40 B para los encabezados de registros TLS en cada mensaje saliente. Para la mayoría de las aplicaciones, este es un pequeño porcentaje de su factura. Sin embargo, esto podría convertirse en un gran porcentaje si su caso específico requiere muchos apretones de manos SSL. Por ejemplo, los dispositivos que no admiten tickets de sesión TLS pueden requerir una gran cantidad de protocolos de enlace de conexión SSL.
Lea más sobre cómo comprender y estimar su factura .