Avalie o desempenho do Firebase Realtime Database com a ferramenta de criação de perfil de banco de dados integrada à CLI do Firebase. Essa ferramenta registra todas as atividades no seu banco de dados durante um determinado período e gera um relatório detalhado. Use esse relatório para resolver problemas relacionados ao desempenho do banco de dados, identificar áreas problemáticas e reduzir consultas não indexadas.
Criar um perfil
Antes de criar o perfil do Firebase Realtime Database, verifique se você está usando a versão mais recente da CLI do Firebase e se ela foi inicializada para o banco de dados e o projeto em que você quer criar o perfil. Você precisa ser um editor ou proprietário desse projeto para criar o perfil.
Inicie a criação do perfil do seu banco de dados com o seguinte comando:
A ferramenta de criação de perfil exibe uma mensagem de status enquanto grava as operações do seu banco de dados e cria o perfil.firebase database:profile
Pressione Enter para completar o perfil e exibir os resultados.
Interpretar seus resultados
A ferramenta de criação de perfil agrega os dados coletados sobre as operações do 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 "Velocidade" mede o tempo de resposta do servidor (em milésimos de segundo) para cada tipo de operação. No entanto, é possível que a velocidade medida nesse relatório não reflita a velocidade da experiência dos usuários finais. Diferentes fatores, incluindo condições de rede, podem aumentar a latência para o cliente.
O relatório "Velocidade" inclui as seguintes propriedades:
- Caminho: o caminho no banco de dados onde as operações ocorreram. Se houver mais de 25 nós filhos, eles serão recolhidos pela ferramenta de criação de perfil em um caminho pai e será adicionado um marcador
$wildcard
. No relatório, uma barra/
representa o diretório raiz do banco de dados. - Contagem: o número de operações que ocorreram em um determinado caminho.
- 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 processar o tipo de operação específico nesse caminho. O intervalo de tempo medido aqui começa depois daquele medido pelo "Tempo médio pendente" descrito abaixo.
- Tempo médio pendente: o tempo médio que as solicitações ficam na fila antes de serem executadas. Esse atraso é comum para todas as solicitações iniciadas pelo cliente. A latência total da solicitação no 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 determinado caminho que foram bloqueadas pelas regras do Firebase Database no seu banco de dados.
Relatório "Velocidade" por tipo de operação | |
---|---|
Velocidade da execução de leitura | O tempo de resposta do servidor em relação às solicitações do cliente para leitura dos dados no banco de dados. Geralmente, o tempo de execução de leitura aumenta de acordo com a quantidade de dados sendo lidos, mas mesmo algumas leituras menores podem ser atrasadas pela pré-busca em cache. |
Velocidade da execução de gravação | O tempo de resposta do servidor em relação às solicitações do cliente para gravação dos dados no banco de dados. O tempo de execução da gravação aumenta de acordo com a quantidade de dados sendo gravada. |
Velocidade da execução de conexão | O tempo de resposta do servidor às solicitações para estabelecer uma conexão com o banco de dados do cliente. A latência das solicitações de conexão é influenciada pelo registro na memória do servidor relacionado ao gerenciamento de conexões. |
Velocidade da execução de transmissão | A quantidade de tempo que o servidor leva para distribuir dados aos clientes que detectam atualizações em tempo real em um determinado caminho. A propriedade Contagem no relatório "Velocidade de transmissão" inclui a quantidade de transmissões emitidas, e não o número de clientes que receberam a informação. Por exemplo, se 10 clientes estiverem detectando um determinado caminho e o servidor transmitir uma atualização para todos os clientes, a contagem de transmissão reflete apenas 1 transmissão, mesmo que os 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 "Largura de banda" exibe informações sobre a quantidade de dados que o seu banco de dados consome em todas as operações de entrada e saída. No entanto, esse relatório não deve ser usado para estimar o faturamento, pois ele não inclui a largura de banda usada em outras operações, como criação de perfil do banco de dados. O relatório "Largura de banda" estima o tamanho aproximado do payload dos dados consumidos pelas operações de leitura, gravação e transmissão originadas no seu banco de dados e destinadas a ele. Essa ferramenta mede o desempenho e não faz estimativas do faturamento.
O relatório "Largura de banda" inclui as seguintes propriedades:
Caminho: o caminho no banco de dados onde as operações ocorreram. Se há mais de 25 nós filhos, a ferramenta de criação de perfil os aglutina em um caminho pai.
Total: o total de bytes de entrada ou de saída utilizados em todas as operações em um determinado caminho.
Contagem: o número de operações que ocorreram em um determinado caminho.
Média: o número médio de bytes transferidos ou carregados nas operações em um determinado caminho (bytes/gravação ou bytes/leitura).
Relatório "Largura de banda" | |
---|---|
Bytes recebidos | Dados consumidos em operações de leitura e transmissão enviadas pelos SDKs do cliente e pela API REST. |
Bytes enviados | Dados consumidos em solicitações de gravação destinadas ao servidor do banco de dados. Os dados excluídos aparecem como gravação com 0 bytes na entrada. |
Consultas não indexadas
As consultas não indexadas podem ser caras, porque os clientes transferem todos os dados para um local e depois executam consultas nele. Isso usa mais largura de banda do que o necessário. Resolva o máximo de consultas não indexadas para otimizar o desempenho do seu banco de dados.
O relatório "Consultas não indexadas" exibe as seguintes propriedades:
- Caminho: o caminho no seu banco de dados onde as consultas não indexadas ocorreram.
- Índice: a regra que você precisa 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 em um determinado caminho.
Criação avançada de perfis
Para ver todas as operações realizadas pelo seu banco de dados, use a sinalização --raw
ao criar o perfil do seu banco de dados, como descrito a seguir:
firebase database:profile --raw
A saída bruta também inclui informações do cliente para cada operação, como as strings userAgent
e os endereços IP. Saiba mais sobre as diferentes operações
realizadas no Firebase Realtime Database em Tipos de operação do Firebase Realtime Database.
Ferramenta de criação de perfil: não é um recurso para faturamento
Não use a ferramenta de criação de perfil para estimar o custo da largura de banda. Essa ferramenta fornece uma visão geral do desempenho do seu banco de dados para ajudar a monitorar operações e resolver problemas, e não faz estimativas do faturamento. Ela não detalha 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 faturado pelo Firebase que não são incluídos no seu perfil de banco de dados:
- Sobrecarga de protocolo: é necessário um tráfego adicional entre o servidor e os clientes para estabelecer e manter uma sessão. Dependendo do protocolo, esse tráfego pode incluir: sobrecarga de protocolos em tempo real do Firebase Realtime Database, sobrecarga do WebSocket e sobrecarga do cabeçalho HTTP. Cada vez que uma conexão é estabelecida, essa sobrecarga, além de qualquer sobrecarga de criptografia SSL, contribui para os custos de conexão. Normalmente, essa quantidade de largura de banda não é grande, mas ela pode ser substancial se os seus payloads forem pequenos ou se você fizer conexões frequentes e curtas.
- 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 40 B para cabeçalhos de registro de TLS em cada mensagem de saída. Para a maioria dos apps, isso representa uma porcentagem pequena da sua fatura. No entanto, ela pode aumentar se seu caso específico precisar de muitos handshakes de SSL. Por exemplo, os dispositivos que não são compatíveis com tickets de sessão TLS podem precisar de vários handshakes de conexão SSL.
Saiba mais sobre como entender e fazer estimativas da sua fatura.