Solução de problemas e perguntas frequentes sobre o Monitoramento de desempenho


Nesta página, fornecemos dicas de solução de problemas para começar a usar o Performance Monitoring ou os recursos e as ferramentas do Performance Monitoring.

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 Performance Monitoring está capturando eventos de desempenho.

  1. Ative a geração de registros de depuração do Performance Monitoring no tempo de build. Para fazer isso, adicione um elemento <meta-data> ao arquivo AndroidManifest.xml do seu app:

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
  2. Verifique se há mensagens de erro nas mensagens de registro.

  3. O Performance Monitoring marca as mensagens de registro com FirebasePerformance. Ao usar o filtro logcat, você vê especificamente a geração de registros do trace de duração e as solicitações de rede HTTP/S. Basta executar o seguinte comando:

    adb logcat -s FirebasePerformance
  4. Verifique os seguintes tipos de registros que indicam que o Performance Monitoring está registrando eventos de desempenho:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Clique no URL para ver seus dados no Console do Firebase. Pode levar alguns instantes até que os dados sejam atualizados no painel.

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 Performance Monitoring.

Como começar a usar o Performance Monitoring

Se você está começando a usar o Performance Monitoring (iOS+ | Android | Web), as dicas a seguir podem ajudar a resolver problemas que envolvem a detecção do SDK pelo Firebase ou a exibição dos primeiros dados de desempenho no console do Firebase.

O Firebase pode detectar se você adicionou o SDK do Performance Monitoring 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 versão mais recente do SDK ao app e nenhuma alteração apareceu, verifique suas mensagens de registro para conferir se o Performance Monitoring está registrando eventos. Realize as etapas apropriadas, conforme descrito abaixo, para solucionar problemas de uma mensagem atrasada de detecção de SDK.

  1. Verifique se você está usando o SDK do Android para o Performance Monitoring 19.1.0 ou mais recente (ou Firebase BoM 26.3.0 ou mais recente). Consulte as Notas de lançamento.

  2. Se você ainda estiver desenvolvendo localmente, tente gerar mais eventos para a coleta de dados:

    1. Gere eventos alternando o plano de fundo e o primeiro plano do app várias vezes. Interaja com o app navegando pelas telas e/ou acionando solicitações de rede.
  3. Verifique se o arquivo de configuração do Firebase (google-services.json) foi adicionado corretamente ao app e se você não o modificou. Especificamente, verifique o seguinte:

    • O nome do arquivo de configuração não tem caracteres adicionais, como (2).

    • O arquivo de configuração está no diretório módulo (nível do app) do app.

    • O ID do app Android (mobilesdk_app_id) do Firebase listado no arquivo de configuração está correto no app. Encontre o ID do app no card Seus apps das Configurações do projeto.

    Se algo parecer errado com o arquivo de configuração no seu app, tente o seguinte:

    1. Exclua o arquivo de configuração atual do app.

    2. Siga estas instruções para fazer o download de um novo arquivo de configuração e adicioná-lo ao seu app Android.

  4. 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 dados processados (após 10 minutos), entre em contato com o suporte do Firebase.

  1. Verifique a configuração do plug-in do Gradle para o Performance Monitoring da seguinte maneira:

    1. Veja se você adicionou o plug-in corretamente. Especificamente, verifique o seguinte:

      • Você adicionou o plug-in (apply plugin: 'com.google.firebase.firebase-perf') ao arquivo build.gradle do módulo (nível do app).
      • Você incluiu a dependência do classpath para o plug-in (classpath 'com.google.firebase:perf-plugin:1.4.2') no arquivo build.gradle no nível do projeto.

    2. Verifique se o plug-in não está desativado usando uma das seguintes sinalizações:

      • instrumentationEnabled no arquivo build.gradle do módulo (nível do app)
      • firebasePerformanceInstrumentationEnabled no arquivo gradle.properties

  2. Verifique se o SDK do Performance Monitoring não está desativado usando uma das seguintes flags no arquivo AndroidManifest.xml:

    • firebase_performance_collection_enabled
    • firebase_performance_collection_deactivated
  3. Verifique se o Performance Monitoring não está desativado no ambiente de execução.

  4. Se você não encontrar nada desativado no seu app, entre em contato com o suporte do Firebase.

O Performance Monitoring 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.

Solução de problemas gerais

Se você tiver adicionado o SDK e estiver usando o Performance Monitoring no app, as dicas a seguir poderão ajudar a resolver problemas gerais que envolvem recursos e ferramentas do Performance Monitoring.

Se você não estiver vendo eventos de desempenho nas mensagens de registro, tente estas etapas de solução de problemas:

  1. Verifique a configuração do plug-in do Gradle para o Performance Monitoring da seguinte maneira:

    1. Veja se você adicionou o plug-in corretamente. Especificamente, verifique o seguinte:

      • Você adicionou o plug-in (apply plugin: 'com.google.firebase.firebase-perf') ao arquivo build.gradle do módulo (nível do app).
      • Você incluiu a dependência do classpath para o plug-in (classpath 'com.google.firebase:perf-plugin:1.4.2') no arquivo build.gradle no nível do projeto.

    2. Verifique se o plug-in não está desativado usando uma das seguintes sinalizações:

      • instrumentationEnabled no arquivo build.gradle do módulo (nível do app)
      • firebasePerformanceInstrumentationEnabled no arquivo gradle.properties

  2. Verifique se o SDK do Performance Monitoring não está desativado usando uma das seguintes flags no arquivo AndroidManifest.xml:

    • firebase_performance_collection_enabled
    • firebase_performance_collection_deactivated
  3. Verifique se o Performance Monitoring não está desativado no ambiente de execução.

  4. Se você não encontrar nada desativado no seu app, entre em contato com o suporte do Firebase.

Se você não tiver dados para traces de renderização de tela, tente as etapas de solução de problemas a seguir:

  1. Verifique se você está usando a versão mais recente do SDK do Android (v21.0.4). Os traces de renderização de tela só estão disponíveis na versão v15.2.0 ou posterior.

  2. Verifique se você não desativou manualmente a aceleração de hardware de uma tela.

  3. Verifique se você não está usando o DexGuard ou o Jack. O Performance Monitoring é incompatível com esses conjuntos de ferramentas.

    • O DexGuard desativa a coleta automática de traces de aplicativos em primeiro plano, de apps em segundo plano e de inicialização de aplicativos. No entanto, todos os traces de código personalizados devem se comportar normalmente se o app usa o DexGuard.

    • O Jack foi descontinuado e, no geral, não deve ser usado no seu app.

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:

  1. Se você tiver instrumentado traces de código personalizados com a API Trace, verifique a configuração deles, 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.

  2. Se você tiver instrumentado traces de código personalizados com a notação @AddTrace, verifique a configuração do plug-in do Gradle para o Performance Monitoring:

    1. Veja se você adicionou o plug-in corretamente. Especificamente, verifique o seguinte:

      • Você adicionou o plug-in (apply plugin: 'com.google.firebase.firebase-perf') ao arquivo build.gradle do módulo (nível do app).
      • Você incluiu a dependência do classpath para o plug-in (classpath 'com.google.firebase:perf-plugin:1.4.2') no arquivo build.gradle no nível do projeto.

    2. Verifique se o plug-in não está desativado usando uma das seguintes sinalizações:

      • instrumentationEnabled no arquivo build.gradle do módulo (nível do app)
      • firebasePerformanceInstrumentationEnabled no arquivo gradle.properties

  3. Verifique as mensagens de registro para confirmar se o Performance Monitoring está registrando os traces de código personalizados esperados.

  4. Se o Performance Monitoring estiver registrando eventos, mas nenhum dado for exibido após 24 horas, entre em contato com o suporte do Firebase.

Se estiverem faltando dados de solicitação de rede, tente as seguintes etapas de solução de problemas:

  1. Nos apps Android, o plug-in do Gradle para o Performance Monitoring permite uma instrumentação que oferece monitoramento automático das solicitações de rede HTTP/S. Verifique se:

    1. Veja se você adicionou o plug-in corretamente. Especificamente, verifique o seguinte:

      • Você adicionou o plug-in (apply plugin: 'com.google.firebase.firebase-perf') ao arquivo build.gradle do módulo (nível do app).
      • Você incluiu a dependência do classpath para o plug-in (classpath 'com.google.firebase:perf-plugin:1.4.2') no arquivo build.gradle no nível do projeto.

    2. Verifique se o plug-in não está desativado usando uma das seguintes sinalizações:

      • instrumentationEnabled no arquivo build.gradle do módulo (nível do app)
      • firebasePerformanceInstrumentationEnabled no arquivo gradle.properties

  2. Verifique a incompatibilidade da biblioteca de rede. O Performance Monitoring coleta automaticamente métricas das solicitações de rede que usam as seguintes bibliotecas de rede: OkHttp 3.x.x, URLConnection do Java e Apache HttpClient.

    É possível adicionar o monitoramento personalizado para solicitações de rede.

  3. Atente para o seguinte:

    • Dependendo do comportamento do código e das bibliotecas de rede usadas pelo código, o Performance Monitoring 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.

    • O Performance Monitoring não é compatível com o DexGuard e o Jack.

      • O DexGuard desativa o monitoramento de solicitações de rede HTTP/S.
      • O Jack foi descontinuado e, no geral, não deve ser usado no seu app.
    • O Performance Monitoring não informa solicitações de rede com cabeçalhos Content-Type inválidos. No entanto, as solicitações de rede sem os cabeçalhos Content-Type ainda serão aceitas.

Saiba mais sobre como o Performance Monitoring agrega solicitações de rede em padrões do URL.

Você também pode testar os padrões de URL personalizados.

Perguntas frequentes

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 Performance Monitoring é compatível com alertas para 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.

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.

O Performance Monitoring coleta dados de desempenho dos dispositivos dos usuários no seu app. Se o aplicativo tiver muitos usuários ou se gerar muita atividade de desempenho, o Performance Monitoring 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 Performance Monitoring 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 Performance Monitoring coleta um número limitado de traces de código e 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 o Firebase Remote Config para 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.

    Os projetos que ativaram a integração do BigQuery recebem um limite maior para o número de rastros de solicitações de rede.

    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, o Performance Monitoring também pode restringir o número de sessões.

  • Limitação de taxa do lado do servidor: para garantir que os apps não ultrapassem o limite de amostragem, o Performance Monitoring 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.

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. Para informações sobre Alertas, consulte Configurar alertas de problemas de desempenho.

Reformulamos a seção Performance Monitoring do console do Firebase para que a guia Painel exibe as principais métricas e todos os traces em um só lugar. Como parte da reformulaçã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).

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 atual no SDK do Performance Monitoring.

Para ver o desempenho de fragmentos, além da atividade no app, verifique se o app usa o SDK do Android para o Performance Monitoring versão 20.1.0 ou mais recente. Para saber mais, consulte Adicionar o Monitoramento de desempenho ao seu app.

Cada um dos traços de fragmentos e atividades é baseado no nome da classe, conforme definido no aplicativo. Cada um dos traços de tela contém o prefixo st, seguido pelo nome da classe. No Console do Firebase, o prefixo é removido. Para saber mais, consulte Saiba mais sobre dados de desempenho de renderização de tela (apps para Apple e Android).

O Performance Monitoring realiza amostragem de eventos em todos os eventos coletados em um dispositivo. Essa abordagem permite coletar os eventos mínimos necessários dos dispositivos dos usuários para fornecer métricas de desempenho.

O Performance Monitoring permite configurar alertas para as métricas que são importantes para você. Para traços de renderização de tela gerados, configure alertas para receber notificações quando a porcentagem de frames lentos e congelados exceder um limite definido por você.

O Performance Monitoring para Android usa a instrumentação de bytecode para fornecer alguns recursos prontos para uso, como monitoramento de solicitações de rede HTTP/S. Como parte da compilação, o processo requer iteração em todas as classes do app, incluindo dependências, para instrumentar o código essencial na medição do desempenho das solicitações de rede do aplicativo.

Veja a seguir alguns dos principais itens que aumentam o tempo de compilação:

  • Número de classes ou arquivos
  • Tamanho de cada uma das classes (linhas de código)
  • Configuração da máquina
  • Build inicial x build posterior (versões subsequentes normalmente são mais rápidas que as iniciais)

Para otimizar o tempo de compilação, considere modularizar o código.

Desde a v1.3.3 do plug-in do Performance Monitoring, estamos nos concentrando em fazer melhorias consideráveis no processamento de build incremental e no armazenamento em cache das entradas da biblioteca. Para receber as melhorias mais recentes no tempo de build, use a versão mais recente do plugin (v1.4.2).

Se você quiser evitar longos tempos de build, desative localmente o plug-in do Performance Monitoring nos seus builds de depuração. No entanto, essa abordagem não é recomendada para builds de produção, já que isso pode resultar na perda de medidas de desempenho das solicitações de rede no app.

O Performance Monitoring para Android usa a instrumentação de bytecode para fornecer alguns recursos prontos para uso, como monitoramento de solicitações de rede HTTP/S. Como parte da compilação, o processo requer iteração em todas as classes do app, incluindo dependências, para instrumentar o código essencial na medição do desempenho das solicitações de rede do aplicativo.

Se você receber erros de build como JSR/RET are not supported with computeFrames option ou erros semelhantes após a integração com o plug-in do Performance Monitoring, é possível que você tenha uma dependência em uma biblioteca incompatível com o plug-in do Gradle para o Performance Monitoring.

Para resolver isso, siga as etapas abaixo para impedir que bibliotecas/classes incompatíveis sejam instrumentadas:

  1. Atualize para a versão mais recente do plug-in do Gradle para o Performance Monitoring (no mínimo, v1.4.0).
  2. Atualize a versão do Plug-in do Android para Gradle para a v7.2.0 ou mais recente.
  3. Adicione a sinalização a seguir ao arquivo build.gradle do módulo (nível do app) para impedir que as classes/bibliotecas incompatíveis sejam instrumentadas:
    android {
      // ...
      androidComponents {
        onVariants(selector().all(), {
            instrumentation.excludes.add("example.incompatible.library")
        })
      }
    }
    Para saber mais sobre a propriedade exclude da API Instrumentation do Android para Gradle, consulte Instrumentação.

Registre um problema no GitHub (em inglês) ao encontrar erros de build devido a bibliotecas incompatíveis para que eles também não sejam instrumentados no plug-in do Performance Monitoring.

Se você tiver ativado a integração do BigQuery com o Firebase Performance Monitoring, os dados serão exportados para o BigQuery entre 12 e 24 horas após o fim do dia (Horário do Pacífico).

Por exemplo, os dados de 19 de abril estarão disponíveis no BigQuery em 20 de abril entre as 12h e meia-noite (todas as datas e horas são do Horário do Pacífico).

Processamento e exibição de dados quase em tempo real

O Firebase Performance Monitoring 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.

Para aproveitar o processamento de dados quase em tempo real, basta verificar se o app usa uma versão do SDK do Performance Monitoring compatível com o processamento de 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 mais recente (ou Firebase Android BoM v26.1.0 ou mais recente)
  • 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 Performance Monitoring processe os dados quase 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 mais recente (ou Firebase Android BoM v26.1.0 ou mais recente)
  • 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 Performance Monitoring processe os dados quase em tempo real.

Se o app não usar uma versão do SDK compatível com esse processamento em tempo real, ainda será possível ver todos os dados de desempenho dele 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.

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 ().