Mide el rendimiento de Firebase Realtime Database con el generador de perfiles de base de datos integrada en Firebase CLI. El generador de perfiles registra toda la actividad de tu base de datos durante un período y genera un informe detallado. Usa este informe para solucionar problemas en el rendimiento de la base de datos, detectar las áreas con problemas y reducir las consultas no indexadas.
Genera un perfil
Antes de comenzar a generar el perfil de Firebase Realtime Database, asegúrate de usar la versión más reciente de Firebase CLI y de inicializarla para la base de datos y el proyecto de los que deseas generar perfiles. Ten en cuenta que debes ser editor o propietario de ese proyecto para generar perfiles.
Comienza a generar el perfil de la base de datos con el siguiente comando:
El generador de perfiles muestra un mensaje de estado mientras registra operaciones desde la base de datos y genera el perfil.firebase database:profile
Presiona Intro para completar el perfil y mostrar los resultados.
Interpreta los resultados
El generador de perfiles agrega los datos que se recopilan de las operaciones de tu 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 realmente la velocidad que reciben los usuarios finales. Hay diferentes factores, como las condiciones de la red, que pueden agregar latencia en el lado del cliente.
El Informe de velocidad incluye las siguientes propiedades:
- Ruta de acceso: La ruta de acceso de la base de datos en la que ocurrieron las operaciones. Si hay más de 25 nodos secundarios, la herramienta de generación de perfiles los contrae en una ruta de acceso superior y agrega un marcador
$wildcard
. Es posible que veas el directorio raíz de la base de datos en el informe, representado por una barra diagonal/
. - Recuento: La cantidad de operaciones que ocurrieron en la ruta de acceso determinada.
- Velocidad de ejecución promedio: Es el tiempo promedio que tarda el servidor en ejecutar la lógica empresarial necesaria para controlar el tipo de operación específico en esa ruta. El intervalo que se mide aquí comienza después del que mide la propiedad “Tiempo pendiente promedio” que se describe a continuación.
- Tiempo pendiente promedio: Es el tiempo promedio que pasan las solicitudes en la cola antes de que se ejecuten. Este retraso es común para todas las solicitudes que inicia el cliente. La latencia total de las solicitudes del servidor es, aproximadamente, la suma del tiempo pendiente y la velocidad de ejecución de esa solicitud.
- Permiso denegado: La cantidad de operaciones en la ruta de acceso determinada que se bloquearon según las reglas de Firebase Database de tu base de datos.
Informe de velocidad por tipo de operación | |
---|---|
Velocidad de ejecución de lectura | Es el tiempo de respuesta del servidor para las solicitudes de lectura de datos en la base de datos que realizan los clientes. El tiempo de ejecución de lectura suele escalar según la cantidad de datos que se leen, pero incluso las operaciones de lectura pequeñas podrían retrasarse debido a la recuperación previa de la caché. |
Velocidad de ejecución de escritura | Es el tiempo de respuesta del servidor para las solicitudes de escritura de datos en la base de datos que realizan los clientes. El tiempo de ejecución de escritura escala según la cantidad de datos que se escriben. |
Velocidad de ejecución de conexión | Es el tiempo de respuesta del servidor para las solicitudes de conexión con los clientes de la base de datos. La latencia de las solicitudes de conexión se rige según el mantenimiento de registros relacionados con la administración de conexiones en la memoria del servidor. |
Velocidad de ejecución de transmisión | Es la cantidad de tiempo que tarda el servidor en distribuir datos a los clientes que detectan la ruta de acceso determinada para recibir actualizaciones en tiempo real. La propiedad Recuento en el Informe de velocidad de transmisión es una sumatoria de la cantidad de transmisiones que ocurrieron, no de la cantidad de clientes que recibieron la información. Por ejemplo, si 10 clientes escuchan en una ruta de acceso determinada y el servidor transmite una actualización a los 10 clientes, el recuento de transmisión solo refleja 1 transmisión, pese a que 10 clientes recibieron los datos. La propiedad Permiso denegado no se incluye en el Informe de velocidad de transmisión. |
Ancho de banda
El Informe de ancho de banda proporciona estadísticas sobre la cantidad de datos que consume la base de datos en las operaciones entrantes y salientes. Sin embargo, no debes usar el Informe de ancho de banda para estimar la facturación, ya que no incluye el ancho de banda que usan otras operaciones, como la generación de perfiles de la base de datos. El Informe de ancho de banda calcula aproximadamente el tamaño de la carga útil de los datos que consumen las operaciones de lectura, escritura y transmisión hacia la base de datos y desde ella. Es una herramienta para medir el rendimiento, no para hacer previsiones de la facturación.
El Informe de ancho de banda incluye las siguientes propiedades:
Ruta de acceso: La ruta de acceso de la base de datos en la que ocurrieron las operaciones. Si hay más de 25 nodos secundarios, la herramienta de generación de perfiles los contrae en una ruta de acceso superior.
Total: El total de bytes salientes o entrantes que usaron todas las operaciones en la ruta de acceso determinada.
Recuento: La cantidad de operaciones que ocurrieron en la ruta de acceso determinada.
Promedio: La cantidad promedio de bytes descargados o subidos en todas las operaciones de la ruta de acceso determinada (bytes/escritura o bytes/lectura).
Informe de ancho de banda | |
---|---|
Bytes descargados | Datos consumidos a través de operaciones de lectura y transmisión enviadas a través de los SDK de cliente y la API de REST. |
Bytes subidos | Datos consumidos a través de las solicitudes de escritura en el servidor de la base de datos. Las eliminaciones se muestran como escrituras con 0 bytes en "entrantes". |
Consultas no indexadas
Las consultas no indexadas pueden ser costosas, ya que los clientes descargan todos los datos en una ubicación y luego ejecutan consultas sobre ellos. Esto usa más ancho de banda de lo necesario. Resuelve la mayor cantidad posible de consultas no indexadas para optimizar el rendimiento de tu base de datos.
El Informe de consultas no indexadas muestra las siguientes propiedades:
- Ruta de acceso: La ruta de acceso de la base de datos donde ocurrieron las consultas no indexadas.
- Índice: La regla que debes agregar para resolver las consultas no indexadas. Obtén más información sobre la indexación en Indexa tus datos.
- Recuento: La cantidad de consultas no indexadas que ocurrieron en esa ruta de acceso.
Generación de perfiles avanzada
Para ver todas las operaciones que maneja la base de datos, usa la marca --raw
cuando generes el perfil de la base de datos, como se muestra a continuación:
firebase database:profile --raw
La salida sin procesar también incluye información del cliente de cada operación, como las strings userAgent
y las direcciones IP. Obtén más información sobre las diferentes operaciones con perfiles generados en Firebase Realtime Database en Tipos de operaciones de Firebase Realtime Database.
La herramienta de generación de perfiles no es una herramienta de facturación
No uses la herramienta de generación de perfiles para estimar el costo del ancho de banda. La herramienta de generación de perfiles está diseñada para mostrarte una visión general del rendimiento de tu base de datos, con el fin de ayudarte a supervisar las operaciones y solucionar los problemas, no a estimar la facturación. No incluye el tráfico de red, solo registra una estimación de los datos de aplicación que se enviaron en respuestas.
Los siguientes son ejemplos comunes del tráfico de red que facturó Firebase y que no se incluyen en el perfil de tu base de datos:
- Sobrecarga de protocolo: Se necesita tráfico adicional entre el servidor y los clientes para establecer y mantener una sesión. Según el protocolo subyacente, este tráfico podría incluir la sobrecarga de protocolo en tiempo real de Firebase Realtime Database, la sobrecarga de WebSocket y la sobrecarga del encabezado HTTP. Cada vez que se establece una conexión, esta sobrecarga, junto con cualquier sobrecarga de encriptación de SSL, contribuye a los costos de conexión. Pese a que, por lo general, esto no equivale a una gran cantidad de ancho de banda, puede ser sustancial si las cargas útiles son pequeñas o haces conexiones cortas con frecuencia.
- Sobrecarga de encriptación de SSL: Hay un costo asociado con la sobrecarga de encriptación de SSL necesaria para las conexiones seguras. En promedio, este costo equivale a 3.5 KB para el protocolo de enlace inicial y aproximadamente 40 B para los encabezados del registro TLS en cada mensaje saliente. Para la mayoría de las apps, este es un porcentaje pequeño de la factura. Sin embargo, puede convertirse en un mayor porcentaje si tu caso específico necesita una gran cantidad de protocolos de enlace SSL. Por ejemplo, los dispositivos que no admiten solicitudes de sesión TLS pueden necesitar una gran cantidad de protocolos de enlace de conexión SSL.
Obtén más información para comprender y calcular tu factura.