Esta página fornece dicas de solução de problemas para usar os recursos e as ferramentas do Monitoramento de desempenho.
Primeiras verificações para a solução de problemas
As duas verificações a seguir são práticas recomendadas gerais para qualquer pessoa antes da solução de problemas.
1. Verificar se há eventos de desempenho nas mensagens de registro
Verifique suas mensagens de registro para confirmar que o SDK do Monitoramento de desempenho está captando eventos de desempenho.
Como ver se há eventos de desempenho nas mensagens de registro
Abra as ferramentas para desenvolvedores do navegador (por exemplo, a guia "Rede" do Chrome Dev ou o Monitor de rede do Firefox).
Atualize seu app da Web no navegador.
Verifique se há mensagens de erro nas mensagens de registro.
Após alguns segundos, procure uma chamada de rede para
firebaselogging.googleapis.com
nas ferramentas para desenvolvedores do seu navegador. A presença dessa chamada de rede mostra que o navegador está enviando dados de desempenho ao Firebase.
Se o app não estiver registrando eventos de desempenho, veja as dicas de solução de problemas.
2. Verificar o Painel de status do Firebase
Verifique o Painel de status do Firebase caso haja uma interrupção conhecida no Firebase ou no Monitoramento de desempenho.
Introdução ao Monitoramento de desempenho
Se você está começando a usar o Monitoramento de desempenho (iOS+ | Android | Web), as dicas a seguir podem ajudar com problemas que envolvem a detecção do SDK pelo Firebase ou a exibição dos primeiros dados de desempenho no Console do Firebase.
O SDK foi adicionado ao app, mas o console ainda pede para adicioná-lo
O Firebase pode detectar se você adicionou o SDK do Monitoramento de desempenho ao seu app quando ele recebe informações de eventos (como interações) do aplicativo. O painel Desempenho do Console do Firebase costuma exibir a mensagem "SDK detectado" em até 10 minutos após iniciar o app. Em seguida, o painel exibirá os dados iniciais processados em 30 minutos.
Se já passaram mais de 10 minutos desde que você adicionou a última versão do SDK ao app e nenhuma alteração apareceu, verifique suas mensagens de registro para conferir se o Monitoramento de desempenho está registrando eventos. Realize as etapas apropriadas, conforme descrito abaixo, para solucionar problemas de uma mensagem atrasada de detecção de SDK.
O app está registrando eventos: etapas de solução de problemas
Se você ainda estiver desenvolvendo localmente, tente gerar mais eventos para a coleta de dados:
Disponibilize e visualize seu app da Web em um ambiente local.
Gere eventos carregando subpáginas para seu site, interagindo com o app e/ou acionando solicitações de rede. Mantenha a guia do navegador aberta por pelo menos 10 segundos após o carregamento da página.
Verifique se o objeto de configuração do Firebase foi adicionado corretamente ao app e se você não o modificou. Especificamente, verifique o seguinte:
- O ID do app da Web (
appId
) do Firebase no objeto de configuração está correto no app. Encontre o ID do app no card Seus apps das Configurações do projeto (settings).
Se algo parecer errado com o objeto de configuração no seu app, tente o seguinte:
Exclua o objeto de configuração atual do app.
Siga estas instruções para receber um novo objeto de configuração e adicioná-lo ao seu app da Web.
- O ID do app da Web (
Se o SDK estiver registrando eventos e tudo estiver configurado corretamente, mas você ainda não estiver vendo a mensagem de detecção do SDK ou os dados processados (após duas horas), entre em contato com o suporte do Firebase.
O app não está registrando eventos: etapas de solução de problemas
Verifique se o SDK do Monitoramento de desempenho está inicializado corretamente no app.
Verifique se o SDK do Monitoramento de desempenho não está desativado. Para isso, use a seguinte sinalização:
performance.instrumentationEnabled
Verifique se o processo de cache do navegador está desativado. Caso contrário, o navegador poderá não receber novas configurações de instrumentação.
Feche e abra novamente a guia da página da Web. Verifique se há registros novamente.
Se você tiver acabado de adicionar o SDK do Monitoramento de desempenho ao app, talvez precise reiniciá-lo completamente para que o SDK comece a funcionar.
Se você não encontrar nada desativado no seu app, entre em contato com o suporte do Firebase.
O console informa que o SDK foi detectado, mas nenhum dado é exibido
O Monitoramento de desempenho processa dados de eventos de desempenho antes de exibi-los no painel Desempenho.
Se já tiverem passado mais de 24 horas desde que a mensagem "SDK detectado" apareceu e você ainda não estiver vendo dados, verifique o Painel de status do Firebase caso haja uma interrupção conhecida. Se não houver interrupção, entre em contato com o suporte do Firebase.
Como solucionar problemas gerais
Se você tiver adicionado o SDK e estiver usando o Monitoramento de desempenho no app, as dicas a seguir poderão ajudar com problemas gerais que envolvem recursos e ferramentas do Monitoramento de desempenho.
O aplicativo não está registrando eventos de desempenho
Se você não estiver vendo eventos de desempenho nas mensagens de registro, tente estas etapas de solução de problemas:
Verifique se o SDK do Monitoramento de desempenho está inicializado corretamente no app.
Verifique se o SDK do Monitoramento de desempenho não está desativado. Para isso, use a seguinte sinalização:
performance.instrumentationEnabled
Verifique se o processo de cache do navegador está desativado. Caso contrário, o navegador poderá não receber novas configurações de instrumentação.
Feche e abra novamente a guia da página da Web. Verifique se há registros novamente.
Se você tiver acabado de adicionar o SDK do Monitoramento de desempenho ao app, talvez precise reiniciá-lo completamente para que o SDK comece a funcionar.
Se você não encontrar nada desativado no seu app, entre em contato com o suporte do Firebase.
Faltam dados de First Input Delay no Painel de desempenho
Se você não estiver vendo dados da métrica First Input Delay, tente estas etapas de solução de problemas:
Tenha em mente que o Monitoramento de desempenho só registra a métrica First Input Delay se o usuário tiver clicado na página da Web nos primeiros cinco segundos após o carregamento da página.
Verifique se você configurou o app para medir essa métrica. A métrica First Input Delay requer configuração manual. Especificamente, é necessário adicionar a biblioteca de polyfill para essa métrica. Veja instruções de instalação na documentação da biblioteca.
Não é necessário adicionar essa biblioteca de polyfill para o Monitoramento de desempenho gerar relatórios de outras métricas de apps da Web.
Faltam dados de traces personalizados no Painel de desempenho
Você está vendo os dados de desempenho dos traces coletados automaticamente, mas não dos traces de código personalizados? Realize estas etapas de solução de problemas:
Verifique a configuração de traces de código personalizados instrumentados com a API Trace, principalmente o seguinte:
- Os nomes dos traces de código e métricas personalizados precisam cumprir os seguintes
requisitos: nenhum espaço em branco no início ou no final, nenhum sublinhado
(
_
) no início e tamanho máximo de 32 caracteres. - Todos os traces precisam ser iniciados e interrompidos. Os traces que não forem iniciados, que não forem interrompidos ou que forem interrompidos antes de ser iniciados não serão registrados.
Se você estiver usando o método
record()
, não precisará iniciar ou interromper o trace explicitamente.- Os nomes dos traces de código e métricas personalizados precisam cumprir os seguintes
requisitos: nenhum espaço em branco no início ou no final, nenhum sublinhado
(
Verifique se a coleta de dados do Monitoramento de desempenho não está desativada. Para isso, use a seguinte sinalização:
performance.dataCollectionEnabled
Essa sinalização controla a coleta de dados somente de traces de código personalizados (e não de todos os dados).
Verifique as mensagens de registro para confirmar se o Monitoramento de desempenho está registrando os traces de código personalizados esperados.
Se o Monitoramento de desempenho estiver registrando eventos, mas nenhum dado for exibido após 24 horas, entre em contato com o suporte do Firebase.
Faltam dados de solicitação de rede no painel de desempenho
Se estiverem faltando dados de solicitação de rede, lembre-se do seguinte:
O monitoramento de desempenho coleta automaticamente métricas de solicitações de rede informadas pela API do navegador. Esses relatórios não incluem solicitações de rede com falha.
Dependendo do comportamento do código e das bibliotecas de rede usadas pelo código, o Monitoramento de desempenho só pode gerar relatórios sobre solicitações de rede concluídas. Isso significa que as conexões HTTP/S que ficaram abertas talvez não sejam registradas.
Os dados de solicitação de rede não são agregados conforme esperado
Saiba mais sobre como o Monitoramento de desempenho agrega dados de solicitação de rede em padrões de URL.
Você também pode testar os padrões de URL personalizados.
Perguntas frequentes
O que aconteceu com os principais problemas no card de desempenho da página inicial do projeto?
Substituímos Principais problemas por Alertas recentes para expandir mais nosso recurso de alertas, que envia uma notificação automaticamente quando um limite definido é ultrapassado. A funcionalidade de problemas foi descontinuada e substituída por alertas.
O seletor de apps na parte de cima do card de desempenho filtra os problemas em Alertas recentes. Somente os três alertas mais recentes para os apps selecionados são exibidos.
Veja mais informações em Configurar alertas de problemas de desempenho.
O que aconteceu com a capacidade de definir limites para problemas no console?
O Monitoramento de desempenho é compatível com alertas de métricas que excedem os limites definidos. Para evitar confusão com esses limites configuráveis para métricas de desempenho, removemos a capacidade de configurar limites para problemas.
O que aconteceu com as informações de detalhes e métricas no Console do Firebase?
Substituímos as páginas de detalhes e métricas por uma interface do usuário (interface) reformulada e centralizada para melhorar o processo da solução de problemas. Essa nova interface de solução de problemas oferece a mesma funcionalidade principal que a página de detalhes e de métricas. Para saber mais sobre a solução de problemas, consulte Ver mais dados de um trace específico.
Por que o número de amostras não é o que eu esperava?
O Monitoramento de desempenho coleta dados da performance dos dispositivos dos usuários no seu app. Se o aplicativo tiver muitos usuários ou se gerar muita atividade de desempenho, o Monitoramento de desempenho poderá limitar a coleta de dados a um subconjunto de dispositivos para reduzir o número de eventos processados. Esses limites são o suficiente para que, mesmo com menos eventos, os valores das métricas ainda representem a experiência do usuário no app.
Para gerenciar o volume de dados coletados, o Monitoramento de desempenho usa estas opções de amostragem:
Limitação de taxa no dispositivo: para evitar que um dispositivo envie bursts de traces de repente, limitamos o número de traces de solicitação de código e rede enviados de um dispositivo para 300 eventos a cada 10 minutos. Assim, o dispositivo é protegido contra instrumentações de loop que podem enviar grandes quantidades de dados de desempenho e evitamos a distorção das medidas de desempenho por um único dispositivo.
Amostragem dinâmica: o Monitoramento de desempenho coleta aproximadamente 100 milhões de eventos para traces de código e 100 milhões para traces de solicitação de rede por app diariamente de todos os usuários do aplicativo. Uma taxa de amostragem dinâmica é buscada nos dispositivos usando a Configuração remota do Firebase. Assim, é possível determinar se um dispositivo aleatório precisa capturar e enviar traces. Um dispositivo não selecionado para amostragem não envia eventos. A taxa de amostragem dinâmica é específica do app e é ajustada para garantir que o volume geral dos dados coletados continue abaixo do limite.
As sessões do usuário enviam outros dados detalhados de um dispositivo, e exige mais recursos para identificar e enviar as informações. Para minimizar o impacto das sessões de usuários, também é possível restringir o número de sessões usando o Monitoramento de desempenho.
Limitação de taxa do lado do servidor: para garantir que os apps não ultrapassem o limite de amostragem, o Monitoramento de desempenho pode usar a amostragem do lado do servidor para excluir alguns eventos recebidos dos dispositivos. Esse tipo de limitação não altera a eficácia das nossas métricas, mas pode causar algumas mudanças de padrão, incluindo:
- O número de traces e o de vezes em que um código foi executado podem ser diferentes.
- Os traces estreitamente vinculados ao código podem ter um número de amostras diferente.
O que aconteceu com a guia Problemas no console?
Substituímos a guia "Issues" pela introdução de alertas, que informa automaticamente quando os limites definidos são excedidos. Não é mais necessário verificar manualmente o Console do Firebase para determinar o status de um limite. Veja mais informações em Configurar alertas de problemas de desempenho.
O que aconteceu com as guias No dispositivo e Rede no console? Como faço para ver os traces que estavam nessas páginas?
Redesenhamos a seção "Monitoramento de desempenho" do Console do Firebase para que a guia Painel exiba as principais métricas e todos os traces em um só lugar. Como parte da renovação, removemos as páginas No dispositivo e Rede.
A tabela de traces na parte de baixo da guia Painel tem as mesmas informações que as guias No dispositivo e Rede, mas com alguns recursos a mais, incluindo a capacidade de ordenar os traces pela mudança na porcentagem de uma métrica específica. Para visualizar todas as métricas e dados de um trace específico, clique no nome do trace na tabela.
Veja seus traces nestas subguias da tabela:
- Traces de solicitação de rede (prontos para uso e personalizados): subguia Solicitações de rede
- Traces de código personalizados: subguia Traces personalizados
- Traces de inicialização do app, de app em primeiro plano e de app em segundo plano: subguia Traces personalizados
- Traces de renderização da tela: subguia Renderização de tela
- Traces de carregamento da página: subguia Carregamento de página
Para saber mais sobre a tabela de traces e como visualizar métricas e dados, acesse a página de informações gerais do console (iOS+ | Android | Web).
Por que o número de frames lentos e congelados não é o que eu esperava?
Os frames congelados e com renderização lenta são calculados com uma taxa de atualização de 60 Hz. Se a taxa de atualização do dispositivo for menor que 60 Hz, cada frame terá um tempo de renderização mais lento, porque menos frames serão renderizados por segundo. Tempos de renderização mais lentos podem gerar frames mais lentos ou congelados, porque mais frames são renderizados lentamente ou travam. No entanto, se a taxa de atualização for maior que 60 Hz, cada frame terá um tempo de renderização mais rápido. Isso faz com que haja menos frames lentos ou congelados. Essa é uma limitação no SDK do Monitoramento de desempenho.
Como faço para adicionar o SDK do Monitoramento de desempenho para JavaScript menor, com namespace, o SDK "independente", ao meu app da Web?
Se o Monitoramento de desempenho for o único produto do Firebase usado no seu app, use o SDK do Monitoramento de desempenho autônomo e o script de cabeçalho recomendado abaixo caso você queira:
- usar uma biblioteca com namespace;
- reduzir o tamanho do pacote do SDK;
- adiar a inicialização do SDK para depois do carregamento da página.
Para incluir o SDK autônomo do Monitoramento de desempenho no seu app e adiar a inicialização dele para depois do carregamento da página, faça o seguinte:
- Adicione o seguinte script ao cabeçalho do seu arquivo de índice.
- Adicione o objeto de configuração do projeto do Firebase do seu app.
(function(sa,fbc){function load(f,c){var a=document.createElement('script'); a.async=1;a.src=f;var s=document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(a,s);}load(sa); window.addEventListener('load',function(){firebase.initializeApp(fbc).performance()}); })(performance_standalone, firebaseConfig);
Em que:
- performance_standalone é
'https://www.gstatic.com/firebasejs/10.12.4/firebase-performance.js'
- firebaseConfig é o objeto de configuração do Firebase.
O script acima carrega de maneira assíncrona o SDK autônomo e inicializa o
Firebase após o disparo do evento onload
da janela. Essa tática reduz o
impacto que o SDK pode ter nas
métricas de carregamento de página, já que o navegador
informou as métricas ao inicializar o SDK.
Noções básicas sobre o SDK autônomo do Monitoramento de desempenho e o script de cabeçalho
O tamanho do SDK autônomo é otimizado. O formato em Gzip tem aproximadamente 10 KB, que tem todos os recursos do Monitoramento de desempenho do Firebase e um conjunto mínimo de funcionalidades do SDK principal.
O Monitoramento de desempenho do Firebase usa as APIs fetch
e Promise
,
que não estão disponíveis em navegadores mais antigos. Os polyfills dessas APIs estão
incluídos no SDK padrão do Monitoramento de desempenho do Firebase para JS, mas são omitidos
no SDK autônomo para reduzir o tamanho.
O SDK do Monitoramento de desempenho do Firebase depende, em parte, da API Resource Timing para acessar as métricas de carregamento de página usando o navegador.
O snippet a seguir detalha o script de cabeçalho que inclui a inicialização do SDK e depois a adia:
(function(sdkSource, firebaseConfigObject) { function load(f, c) { // Creates a script tag to load the standalone SDK var sdkScript = document.createElement('script'); // Sets it to an async script so that it doesn't interfere with page load sdkScript.async = 1; // Sets the source of the script sdkScript.src = f; // Inserts the script into the head of the page var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sdkScript, s); } // Calls the load method load(sdkSource); // Initializes the SDK only when the onload method is called window.addEventListener('load', function() { firebase.initializeApp(firebaseConfigObject).performance(); }); })(performance_standalone, firebaseConfig);
Em que:
- performance_standalone é
'https://www.gstatic.com/firebasejs/10.12.4/firebase-performance-standalone.js'
- firebaseConfig é o objeto de configuração do Firebase.
Processamento e exibição de dados quase em tempo real
O que são os dados de desempenho "quase em tempo real"?
O Monitoramento de desempenho do Firebase processa os dados de desempenho coletados à medida que eles chegam, o que resulta em dados quase em tempo real no Console do Firebase. Usamos o termo "quase em tempo real" porque os dados processados são exibidos no console alguns minutos após a coleta.
Para aproveitar o processamento de dados quase em tempo real, verifique se o app usa uma versão do SDK compatível com tempo real.
Como faço para ter dados de desempenho quase em tempo real sobre meu app?
Para aproveitar o processamento de dados quase em tempo real, confira se o app usa uma versão do SDK do Monitoramento de desempenho compatível com esse processamento.
Estas são as versões do SDK compatíveis:
- iOS: v7.3.0 ou mais recentes
- tvOS: v8.9.0 ou mais recentes
- Android: v19.0.10 ou versões mais recentes (ou a BoM do Firebase para Android v26.1.0 ou posteriores)
- Web: v7.14.0 ou mais recentes
Sempre recomendamos o uso da versão mais recente do SDK, mas qualquer uma das opções acima permitirá que o Monitoramento de desempenho processe os dados quase em tempo real.
Quais versões do SDK do Monitoramento de desempenho são consideradas compatíveis com os dados em tempo real?
Estas são as versões do SDK compatíveis:
- iOS: v7.3.0 ou mais recentes
- tvOS: v8.9.0 ou mais recentes
- Android: v19.0.10 ou versões mais recentes (ou a BoM do Firebase para Android v26.1.0 ou posteriores)
- Web: v7.14.0 ou mais recentes
Sempre recomendamos o uso da versão mais recente do SDK, mas qualquer uma das opções acima permitirá que o Monitoramento de desempenho processe os dados quase em tempo real.
E se eu não atualizar o app para usar uma versão do SDK compatível com o processamento em tempo real?
Se o app não tiver uma versão do SDK compatível com esse processamento, ainda será possível conferir todos os dados de desempenho do app no Console do Firebase. No entanto, a exibição dos dados de desempenho será atrasada em cerca de 36 horas a partir do momento da coleta.
Atualizei para uma versão do SDK compatível com o processamento em tempo real, mas alguns usuários ainda usam versões antigas do app. Vou continuar vendo os dados de desempenho desses usuários no Console do Firebase?
Sim. Você verá os dados de desempenho de todos os usuários independentemente da versão do SDK utilizada por uma instância do app.
No entanto, se você estiver analisando dados recentes (menos de 36 horas), as informações mostradas vão ser de usuários em instâncias do app usando uma versão do SDK compatível com tempo real. Já os dados não recentes vão incluir informações de desempenho de todas as versões do app.
Como entrar em contato com o suporte do Firebase
Ao entrar em contato com o suporte do Firebase, sempre inclua o ID do app do Firebase. Você pode encontrar o ID do app do Firebase no card Seus apps nas Configurações do projeto (settings).