Ir a la consola
Prueba Cloud Firestore: Descubre la base de datos flexible y escalable de Firebase y Google Cloud Platform. Obtén más información sobre Cloud Firestore.

Supervisa el rendimiento de la base de datos

Existen varias formas diferentes de supervisar el rendimiento de Firebase Realtime Database y detectar posibles problemas en tu app. Ver la carga y el ancho de banda entrante y saliente de la app puede darte una idea del monto de la próxima factura. Además, si algo parece estar fuera de lugar, contar con una imagen clara de las operaciones de la base de datos puede ser una herramienta útil para solucionar problemas.

Usa herramientas de supervisión de Realtime Database

Puedes reunir datos sobre el rendimiento de Realtime Database con unas pocas herramientas diferentes, según el nivel de detalle que necesites.

Usa la herramienta de generación de perfiles de Realtime Database

La herramienta de generación de perfiles de Realtime Database proporciona una descripción general de las operaciones de lectura y escritura en la base de datos. El informe incluye datos sobre la velocidad y el tamaño de la carga útil de cada operación, además de las consultas sin indexar. Sin embargo, no incluye información histórica ni estadísticas sobre los gastos de funcionamiento de conexión y no debe usarse para estimar los costos de facturación.

Para obtener más información sobre el uso de la herramienta de generación de perfiles, consulta Cómo crear un perfil de la base de datos.

Usa Firebase console

La pestaña Uso de Firebase console proporciona información sobre las conexiones simultáneas a la base de datos, la cantidad de datos que almacenas, el ancho de banda saliente (incluida la sobrecarga de encriptación y protocolo) y los intervalos de carga de la base de datos que superan 1 minuto. La pestaña Uso te ofrece una descripción general más precisa del rendimiento general de la base de datos, pero es probable que no puedas obtener una vista lo suficientemente detallada para solucionar posibles problemas de facturación o rendimiento.

Obtén más información sobre las estadísticas de Uso de Firebase console en Estima el uso facturado.

Usa Stackdriver Monitoring

Con Stackdriver Monitoring de Google Cloud Platform, puedes usar el Explorador de métricas para ver métricas de rendimiento individuales o crear diferentes paneles con gráficos que muestran distintas combinaciones de métricas de rendimiento en el tiempo. La integración de Realtime Database con Stackdriver Monitoring ofrece el mayor nivel de detalle.

Para comenzar a usar Stackdriver Monitoring, sigue los pasos del Inicio rápido para Google Compute Engine.

Una vez que configures Stackdriver Monitoring, usa el Explorador de métricas o crea un panel con gráficos para supervisar el rendimiento de la base de datos.

En la lista de métricas de GCP, se incluyen todas las métricas de rendimiento de Realtime Database disponibles a través de Stackdriver Monitoring. Consulta las siguientes secciones para ver sugerencias sobre el uso de métricas específicas a fin de detectar problemas de facturación o rendimiento.

Supervisa el uso facturado

Tanto la pestaña Uso en Firebase console como las métricas disponibles a través de Stackdriver Monitoring pueden ayudarte a estimar el uso facturado de Realtime Database. Sin embargo, ten en cuenta que las estadísticas de uso disponibles en Firebase console y a través de Stackdriver son solo estimaciones. Consulta Comprende la facturación de Realtime Database para obtener más información sobre la facturación.

Para usar Stackdriver Monitoring a fin de supervisar el uso facturado, realiza un seguimiento de estas métricas:

  • network/sent_payload_bytes_count: Esta métrica refleja el tamaño de los datos solicitados a través de las operaciones de la base de datos (incluidas las obtenciones de datos, las consultas, las operaciones de escritura, las actualizaciones de objetos de escucha en tiempo real y las transmisiones). No incluye la sobrecarga de la conexión (protocolo o encriptación). La métrica sent_payload_bytes_count se suma a tus costos de ancho de banda de salida, pero no refleja los costos facturados totales. Se trata de una estimación de los datos enviados desde la base de datos en respuesta a solicitudes. Sin embargo, dado que mide el tamaño de la carga útil de los datos solicitados en lugar de los datos enviados realmente, es posible que no siempre sea precisa.
  • network/sent_payload_and_protocol_bytes_count: Esta métrica refleja el tamaño de los datos de la carga útil descritos anteriormente y de la sobrecarga del protocolo que necesita la conexión (por ejemplo, encabezados HTTP, marcos de WebSocket y marcos de protocolo en tiempo real de Firebase). No refleja los costos de encriptación en conexiones seguras.
  • network/sent_bytes_count: Esta métrica es una estimación del tamaño total de los datos enviados desde la base de datos a través de lecturas. Incluye los datos de carga útil que se enviaron realmente a los clientes, además de la sobrecarga del protocolo y la encriptación que generan costos de conexión. Esta es la métrica que refleja de manera más precisa el ancho de banda de salida total que aparece en tu factura de Realtime Database.

  • storage/total_bytes: Usa esta métrica para supervisar cuántos datos almacenas en la base de datos. Los datos que almacenas en Realtime Database se suman a los costos de facturación.

Combina varias métricas en el panel para hacer gráficos que te permitan ver estadísticas útiles y descripciones generales. Por ejemplo, prueba las siguientes combinaciones:

  • Datos de salida: Usa las métricas network/sent_bytes_count, network/sent_payload_and_protocol_bytes_count y network/sent_payload_bytes_count para detectar posibles problemas con la sobrecarga del protocolo o la encriptación, que podrían generar costos inesperados en la factura. Si ves una gran discrepancia entre el tamaño de las cargas útiles de datos solicitadas y las otras métricas que reflejan el consumo de recursos de la conexión, es recomendable que trates de solucionar problemas que puedan estar generando tiempos de espera o conexiones frecuentes. Si no usas solicitudes de sesión TLS, te recomendamos implementarlas para reducir el uso de la conexión SSL para las conexiones que se reanudan.
  • Operaciones: Usa la métrica io/database_load para saber cuánto de la carga total de la base de datos se usa en cada tipo de operación. Asegúrate de agrupar io/database_load por tipo para solucionar problemas de diferentes tipos de operaciones.
  • Almacenamiento: Usa las métricas storage/limitstorage/total_bytes para supervisar el uso del almacenamiento en relación con los límites de almacenamiento de Realtime Database.

Consulta la lista completa de métricas de Realtime Database disponibles a través de Stackdriver Monitoring.

Supervisa el rendimiento

Si tienes problemas con el rendimiento, incluido el tiempo de actividad o la latencia, te recomendamos usar Stackdriver para supervisar las siguientes métricas:

  • io/database_load: Usa esta métrica para supervisar cuánto ancho de banda de la base de datos disponible se encuentra en uso procesando solicitudes con el tiempo. Es probable que experimentes problemas de rendimiento cuando la carga de la base de datos esté cerca del total de ancho de banda disponible. También puedes ver qué tipos de operaciones emplean la mayor cantidad de carga y utilizar esa información según corresponda para solucionar problemas. La carga informada podría superar el 100% en operaciones que tardan más de un minuto. Esto ocurre cuando el ancho de banda total usado en un período de varios minutos se condensa en el intervalo de informes de un minuto, después de que se completa la operación.
  • network/disabled_for_overages: Esta métrica refleja las posibles interrupciones si se excedieron los límites de ancho de banda o de red de Realtime Database.
  • storage/disabled_for_overages: Esta métrica refleja las posibles interrupciones si se excedieron los límites de almacenamiento de Realtime Database.

Combina varias métricas en el panel para hacer gráficos que te permitan ver estadísticas útiles y descripciones generales. Por ejemplo, prueba las siguientes combinaciones:

  • Operaciones: Usa la métrica io/database_load para saber cuánto de la carga total de la base de datos se usa en cada tipo de operación. Asegúrate de agrupar io/database_load por tipo para solucionar problemas de diferentes tipos de operaciones.
  • Almacenamiento: Usa las métricas storage/limitstorage/total_bytes para supervisar el uso del almacenamiento en relación con los límites de almacenamiento de Realtime Database. También puedes agregar storage/disabled_for_overages para ver si tu app tuvo tiempos de inactividad debido a que excedió los límites de almacenamiento.
  • Sobrecarga de SSL: Usa network/https_requests_count para supervisar cuántas solicitudes de conexión SSL recibió la base de datos y separar las solicitudes que volvieron a usar una solicitud de sesión SSL existente con el filtro reused_ssl_session. Puedes medir esto en comparación con network/sent_bytes_count y network/sent_payload_and_protocol_bytes_count para supervisar si la app usa las solicitudes de sesión SSL de forma eficiente.

También puedes configurar alertas a través de Stackdriver Monitoring y recibir notificaciones a partir de métricas de Realtime Database. Por ejemplo, puedes elegir recibir una notificación si io/database_load se acerca a un umbral determinado.

Consulta la lista completa de métricas de Realtime Database disponible a través de Stackdriver Monitoring.

Tipos de cargas de la base de datos

La métrica io/database_load también proporciona una etiqueta del tipo de operación que causó la carga. Estas son los posibles tipos de operaciones que se miden:

  • admin: Operaciones de administrador, como la configuración de reglas y la lectura de metadatos de proyectos.
  • auth: Verificación de la autenticación desde cuentas de servicio o Firebase Authentication para un único cliente.
  • client_management: Control de adición y eliminación de conexiones simultáneas, que incluye la ejecución de operaciones de desconexión durante la eliminación.
  • get_shallow: Recuperación de datos desde un GET de REST con shallow=true.
  • get: Control de operaciones del GET de REST.
  • listen: Recuperación de datos iniciales para operaciones on y once de clientes conectados.
  • on_disconnect: Registro en operaciones de desconexión de clientes.
  • put: Control de operaciones set de clientes o de operaciones PUT de REST.
  • transaction: Realización de transacciones desde solicitudes condicionales de REST o una operación transaction de un cliente.
  • update: Control de operaciones update o solicitudes de PATCH de REST.