Teste o Cloud Firestore: conheça o banco de dados escalonável e flexível do Firebase e do Google Cloud Platform. Saiba mais sobre o Cloud Firestore.

Monitorar o desempenho do Database

Há algumas maneiras de monitorar o desempenho do Firebase Realtime Database e identificar potenciais problemas no seu app. Analisar a largura de banda de entrada e saída e a carga do seu app também pode dar uma ideia do que esperar na fatura. Além disso, se algo parecer fora do normal, ter uma visão clara das operações do seu banco de dados pode ser uma ferramenta útil de solução de problemas.

Uso das ferramentas de monitoramento do Realtime Database

Você pode reunir dados sobre o desempenho do Realtime Database com ferramentas diferentes, de acordo com o nível de granularidade necessário.

Uso da ferramenta de criação de perfil do Realtime Database

A ferramenta de criação de perfil do Realtime Database fornece uma visão geral em tempo real das operações de leitura/gravação no seu banco de dados. O relatório inclui informações sobre a velocidade e o payload de cada operação, além das consultas não indexadas. Ele não inclui informações históricas ou qualquer estatística de sobrecarga de conexão, e não deve ser usado para fazer uma estimativa dos custos de faturamento.

Consulte Criar perfil do seu banco de dados para saber mais sobre como usar a ferramenta de criação de perfil.

Uso do Firebase console

A guia Uso no Console do Firebase oferece informações sobre conexões simultâneas ao seu banco de dados, a quantidade de dados que você armazena, a largura de banda de saída (incluindo sobrecarga de protocolo e criptografia) e a carga do banco de dados durante intervalos de um minuto. A guia Uso fornece uma visão geral mais precisa de todo o desempenho do banco de dados, mas talvez não seja capaz de detalhar o suficiente para solucionar possíveis problemas de desempenho ou faturamento.

Saiba mais sobre as estatísticas da guia Uso no Console do Firebase na seção Estimar seu uso faturado.

Uso do Stackdriver Monitoring

Com o Stackdriver Monitoring do Google Cloud Platform, você pode usar o Metrics Explorer para ver métricas de desempenho individuais ou criar diferentes painéis com gráficos que exibem várias combinações de métricas de desempenho ao longo do tempo. A integração do Realtime Database com o Stackdriver Monitoring oferece o nível mais profundo de granularidade.

Siga as etapas do Guia de início rápido do Google Compute Engine para dar os primeiros passos com o Stackdriver Monitoring.

Depois de configurar o Stackdriver Monitoring, use o Metrics Explorer ou crie um painel com gráficos para monitorar o desempenho do seu banco de dados.

A lista completa de métricas de desempenho do Realtime Database, disponível por meio do Stackdriver Monitoring, está incluída na lista de métricas do GCP. Consulte as seções a seguir para ver dicas sobre como usar métricas específicas para detectar problemas de faturamento ou desempenho.

Monitorar o uso faturado

Tanto a guia Uso no Firebase console quanto as métricas disponíveis por meio do Stackdriver Monitoring podem ajudar você a fazer uma estimativa do uso faturado do Realtime Database. Mas, lembre-se de que as estatísticas de uso disponíveis no Firebase console e pelo Stackdriver são apenas estimativas. Consulte Entenda o faturamento do Realtime Database para mais informações sobre o faturamento.

Se quiser usar o Stackdriver Monitoring para monitorar seu uso faturado, rastreie as seguintes métricas:

  • network/sent_payload_bytes_count: essa métrica reflete o tamanho dos dados solicitados por meio de operações de banco de dados, incluindo buscas, consultas, gravações, atualizações do listener em tempo real e transmissões. Ela não inclui nenhuma sobrecarga de conexão (protocolo ou criptografia). sent_payload_bytes_count contribui para os custos de largura de banda de saída, mas não contabiliza os custos faturados totais. É uma estimativa dos dados enviados do seu banco de dados em resposta a solicitações, mas, como mede o tamanho do payload dos dados solicitados, e não os dados realmente enviados, nem sempre é precisa.
  • network/sent_payload_and_protocol_bytes_count: essa métrica reflete o tamanho dos dados de payload descritos acima e a sobrecarga de protocolo exigida pela conexão. Por exemplo, cabeçalhos HTTP, frames do WebSocket e frames de protocolo em tempo real do Firebase. Ela não conta os custos de criptografia em conexões seguras.
  • network/sent_bytes_count: essa métrica reflete uma estimativa do tamanho total dos dados enviados do seu banco de dados por meio de leituras. Inclui os dados de payload que são de fato enviados aos clientes, além da sobrecarga de protocolo e criptografia que resulta em custos de conexão. Isso reflete com mais precisão a largura de banda total de saída no seu faturamento do Realtime Database.

  • storage/total_bytes: use essa métrica para monitorar a quantidade de dados que você armazena no seu banco de dados. Os dados que você armazena no Realtime Database contribuem para seus custos de faturamento.

Combine métricas em gráficos no seu painel para receber insights úteis e visões gerais. Por exemplo, teste as seguintes combinações:

  • Dados de saída: use as métricas network/sent_bytes_count, network/sent_payload_and_protocol_bytes_count e network/sent_payload_bytes_count para detectar possíveis problemas com a sobrecarga do protocolo ou da criptografia que contribui para custos inesperados na sua fatura. Se você perceber uma grande discrepância entre o tamanho do payload de dados solicitados e as outras métricas que refletem a sobrecarga de conexão, solucione os problemas que possam estar gerando erros de tempo limite ou conexões frequentes. Se você não estiver usando tickets de sessão TLS, tente implementá-los para reduzir a sobrecarga de conexão SSL para as conexões retomadas.
  • Operações: use a métrica io/database_load para ver a quantidade da carga total do banco de dados usada para cada tipo de operação. Agrupe io/database_load por tipo para solucionar problemas de diferentes tipos de operação.
  • Armazenamento: use storage/limit e storage/total_bytes para monitorar sua utilização de armazenamento em relação aos limites do Realtime Database.

Veja a lista completa de métricas do Realtime Database disponíveis por meio do Stackdriver Monitoring.

Monitorar o desempenho

Se você tiver problemas com o desempenho, incluindo o tempo de atividade ou a latência, use o Stackdriver para monitorar as seguintes métricas:

  • io/database_load: use essa métrica para monitorar a quantidade da largura de banda do banco de dados disponível e em uso para processar solicitações ao longo do tempo. Você pode ter problemas de desempenho à medida que a carga do banco de dados se aproxima da largura de banda total disponível. Você também pode ver quais tipos de operação estão utilizando mais carga e solucionar problemas de acordo com essa informação. A carga reportada pode exceder 100% em operações que demoram mais de um minuto. Isso ocorre quando a largura de banda total usada em vários minutos é condensada no intervalo de relatório de um minuto após a conclusão da operação.
  • network/disabled_for_overages: essa métrica reflete quaisquer interrupções que possam ter ocorrido caso seu Realtime Database tenha excedido os limites de largura de banda ou de rede.
  • storage/disabled_for_overages: essa métrica reflete quaisquer interrupções que possam ter ocorrido caso seu Realtime Database tenha excedido os limites de armazenamento.

Combine métricas em gráficos no seu painel para receber insights úteis e visões gerais. Por exemplo, teste as seguintes combinações:

  • Operações: use a métrica io/database_load para ver a quantidade da carga total do banco de dados usada para cada tipo de operação. Agrupe io/database_load por tipo para solucionar problemas de diferentes tipos de operação.
  • Armazenamento: use storage/limit e storage/total_bytes para monitorar sua utilização de armazenamento em relação aos limites do Realtime Database. Você também pode adicionar storage/disabled_for_overages para ver se seu app teve algum tempo de inatividade por conta de limites de armazenamento excedidos.
  • Sobrecarga de SSL: use network/https_requests_count para monitorar o número de solicitações de conexão SSL recebidas pelo banco de dados e separe as solicitações que reutilizaram um ticket de sessão SSL existente com o filtro reused_ssl_session. Você pode avaliar isso em relação a network/sent_bytes_count e network/sent_payload_and_protocol_bytes_count para monitorar se seu app está usando tickets de sessão SSL eficientemente.

Você também pode configurar alertas por meio do Stackdriver Monitoring e receber notificações com base em métricas do Realtime Database. Por exemplo, você pode optar por receber uma notificação se io/database_load estiver se aproximando de um determinado limite.

Veja a lista completa de métricas do Realtime Database disponíveis por meio do Stackdriver Monitoring.

Tipos de carga do banco de dados

A métrica io/database_load também fornece um rótulo que indica qual tipo de operação causou a carga. Veja a seguir os tipos de operações medidas:

  • admin: operações de administração, como definição de regras e leitura de metadados do projeto
  • auth: autenticação de verificação de contas de serviço ou do Firebase Authentication para um único cliente
  • client_management: gerenciamento da adição e remoção de conexões simultâneas, incluindo a execução de operações de desconexão na remoção
  • get_shallow: recuperação dos dados de um REST GET com shallow=true
  • get: gerenciamento das operações REST GET
  • listen: recuperação dos dados iniciais para as operações on e once de clientes conectados
  • on_disconnect: registro em operações de desconexão de clientes
  • put: gerenciamento de operações set de clientes ou operações REST PUT
  • transaction: execução de transações de solicitações REST condicionais ou uma operação transaction de um cliente
  • update: gerenciamento de operações update ou solicitações REST PATCH

Enviar comentários sobre…

Firebase Realtime Database
Precisa de ajuda? Acesse nossa página de suporte.