Perfil do seu banco de dados

Meça o desempenho do seu Firebase Realtime Database com a ferramenta de criação de perfil de banco de dados, integrada à CLI do Firebase . A ferramenta profiler registra todas as atividades em seu banco de dados durante um determinado período de tempo e, em seguida, gera um relatório detalhado. Use o relatório detalhado para solucionar problemas de desempenho do banco de dados, identificar áreas problemáticas e reduzir consultas não indexadas.

Crie um perfil

  1. Antes de começar a criar o perfil do Firebase Realtime Database, verifique se você está usando a versão mais recente da CLI do Firebase e se a inicializou para o banco de dados e o projeto que deseja criar o perfil. Observe que você deve ser um editor ou proprietário desse projeto para criar o perfil.

  2. Comece a criar o perfil do seu banco de dados com o seguinte comando:

    firebase database:profile
    O criador de perfil exibe uma mensagem de status enquanto registra as operações do seu banco de dados e cria o perfil.

  3. Pressione Enter para completar o perfil e exibir os resultados.

Interprete seus resultados

A ferramenta de criação de perfil agrega os dados coletados sobre as operações do seu banco de dados e exibe os resultados em três categorias principais: velocidade , largura de banda e consultas não indexadas .

Velocidade

O Relatório de Velocidade mede o tempo de resposta do servidor (em milissegundos) para cada tipo de operação. No entanto, a velocidade medida no Relatório de Velocidade pode não refletir realmente a velocidade experimentada pelos utilizadores finais. Diferentes fatores, incluindo condições de rede, podem adicionar latência no lado do cliente.

O Relatório de velocidade inclui as seguintes propriedades:

  • Caminho: o caminho em seu banco de dados onde ocorreram as operações. Se houver mais de 25 nós filhos, a ferramenta de criação de perfil os recolhe em um caminho pai e adiciona um marcador $wildcard . Você poderá ver o diretório raiz do seu banco de dados no relatório, representado por uma barra / .
  • Contagem: O número de operações que ocorreram no caminho determinado.
  • Velocidade Média de Execução: O tempo médio que o servidor leva para executar a lógica de negócios necessária para lidar com o tipo de operação específico naquele caminho. O intervalo de tempo medido aqui começa após aquele medido pelo “Tempo Médio Pendente” descrito abaixo.
  • Tempo Médio Pendente: O tempo médio que as solicitações passam na fila antes de serem executadas. Esse atraso é comum a todas as solicitações iniciadas pelo cliente. A latência total da solicitação do lado do servidor é aproximadamente a soma do tempo pendente e da velocidade de execução dessa solicitação.
  • Permissão negada: o número de operações no caminho determinado que foram bloqueadas pelas regras do Firebase Database no seu banco de dados.
Relatório de velocidade por tipo de operação
Leia a velocidade de execução O tempo de resposta do servidor para solicitações do cliente para leitura de dados do banco de dados. O tempo de execução de leitura geralmente aumenta com a quantidade de dados que estão sendo lidos, mas mesmo algumas leituras pequenas também podem ser atrasadas pela pré-busca do cache.
Velocidade de execução de gravação O tempo de resposta do servidor para solicitações do cliente para gravar dados no banco de dados. Escreva escalas de tempo de execução com a quantidade de dados que estão sendo gravados.
Velocidade de execução de conexão O tempo de resposta do servidor para solicitações a serem estabelecidas para clientes de banco de dados. A latência para solicitações de conexão é dominada pela contabilidade na memória do lado do servidor relacionada ao gerenciamento de conexões.
Velocidade de execução de transmissão

A quantidade de tempo que o servidor leva para distribuir dados aos clientes que escutam o caminho fornecido para atualizações em tempo real.

A propriedade Count no Relatório de velocidade de transmissão agrega o número de transmissões que ocorreram, não o número de clientes que receberam as informações. Por exemplo, se 10 clientes estavam escutando em um determinado caminho e o servidor transmitiu uma atualização para todos os 10 clientes, a contagem de transmissões refletirá apenas 1 transmissão, mesmo que 10 clientes tenham recebido os dados.

A propriedade Permissão negada não está incluída no relatório Velocidade de transmissão.

Largura de banda

O Relatório de largura de banda fornece informações sobre a quantidade de dados que seu banco de dados consome nas operações de entrada e saída. No entanto, você não deve usar o Relatório de largura de banda para estimar o faturamento, porque ele não inclui a largura de banda usada para outras operações, como a criação de perfil do seu banco de dados. O Relatório de largura de banda estima aproximadamente o tamanho da carga útil dos dados consumidos pelas operações de leitura, gravação e transmissão de e para seu banco de dados. É uma ferramenta que mede o desempenho e não que prevê o faturamento.

O Relatório de largura de banda inclui as seguintes propriedades:

  • Caminho: o caminho em seu banco de dados onde ocorreram as operações. Se houver mais de 25 nós filhos, a ferramenta de criação de perfil os recolherá em um caminho pai.

  • Total: O total de bytes de saída ou de entrada usados ​​em todas as operações no caminho determinado.

  • Contagem: O número de operações que ocorreram no caminho determinado.

  • Média: O número médio de bytes baixados ou carregados em operações no caminho determinado (bytes/gravação ou bytes/leitura).

Relatório de largura de banda
Bytes baixados Dados consumidos por meio de operações de leitura e transmissão enviadas por meio dos SDKs do cliente e da API REST.
Bytes carregados Dados consumidos por meio de solicitações de gravação que chegam ao servidor de banco de dados. As exclusões aparecem como gravações com 0 bytes na entrada.

Consultas não indexadas

Consultas não indexadas podem ser caras, porque os clientes baixam todos os dados em um local e depois realizam consultas neles. Isso consome mais largura de banda do que o necessário. Resolva o máximo de consultas não indexadas que puder para otimizar o desempenho do seu banco de dados.

O relatório Consultas não indexadas exibe as seguintes propriedades:

  • Caminho: o caminho em seu banco de dados onde ocorreram as consultas não indexadas.
  • Índice: A regra que você deve adicionar para resolver as consultas não indexadas. Saiba mais sobre indexação em Indexar seus dados .
  • Contagem: o número de consultas não indexadas que ocorreram no caminho determinado.

Perfil avançado

Para ver todas as operações que seu banco de dados está manipulando, use o sinalizador --raw ao criar o perfil de seu banco de dados, como segue:

firebase database:profile --raw

A saída bruta também inclui informações do cliente para cada operação, como strings userAgent e endereços IP. Saiba mais sobre as diferentes operações criadas em seu Firebase Realtime Database em Tipos de operação do Firebase Realtime Database .

A ferramenta de criação de perfil: não é uma ferramenta de cobrança

Não use a ferramenta de criação de perfil para estimar o custo da largura de banda. A ferramenta de criação de perfil destina-se a fornecer uma visão geral do desempenho do seu banco de dados, para ajudá-lo a monitorar operações e solucionar problemas, e não para estimar o faturamento. Ele não leva em conta o tráfego de rede, apenas registra uma estimativa dos dados do aplicativo enviados nas respostas.

Veja a seguir alguns exemplos comuns de tráfego de rede cobrado pelo Firebase que não são abordados no perfil do seu banco de dados:

  • Sobrecarga de protocolo: É necessário algum tráfego adicional entre o servidor e os clientes para estabelecer e manter uma sessão. Dependendo do protocolo subjacente, esse tráfego pode incluir: sobrecarga de protocolo em tempo real do Firebase Realtime Database, sobrecarga de WebSocket e sobrecarga de cabeçalho HTTP. Cada vez que uma conexão é estabelecida, essa sobrecarga, combinada com qualquer sobrecarga de criptografia SSL, contribui para os custos de conexão. Embora normalmente não seja uma grande quantidade de largura de banda, pode ser substancial se suas cargas forem pequenas ou se você fizer conexões curtas e frequentes.
  • Sobrecarga de criptografia SSL: Há um custo associado à sobrecarga de criptografia SSL necessária para conexões seguras. Em média, esse custo é de aproximadamente 3,5 KB para o handshake inicial e de aproximadamente 40B para cabeçalhos de registro TLS em cada mensagem de saída. Para a maioria dos aplicativos, essa é uma pequena porcentagem da sua conta. No entanto, isso pode se tornar uma grande porcentagem se o seu caso específico exigir muitos handshakes SSL. Por exemplo, dispositivos que não suportam tickets de sessão TLS podem exigir um grande número de handshakes de conexão SSL.

Leia mais sobre como entender e estimar sua fatura .