Resolver problemas

Esta página mostra como resolver problemas com o Cloud Profiler.

Erros na configuração do projeto Google Cloud

Esta secção apresenta problemas de configuração que pode encontrar e sugestões sobre como corrigir cada um deles.

A Cloud Profiler API está desativada

O erro seguinte ocorre quando a API Profiler não está ativada para o seu projeto Google Cloud :

failed to create a profile, will retry: rpc error: code = PermissionDenied
desc = Cloud Profiler API has not been used in project 012345 before or it is disabled.

Para resolver este problema, o seu Google Cloud projeto tem de ter a API Profiler ativada:

  1. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Se for apresentada a mensagem API ativada, significa que a API já está ativada. Caso contrário, clique no botão Ativar.

O autor da chamada não tem autorização

O seguinte erro ocorre quando não tem autorização para escrever dados de criação de perfis num projeto do Google Cloud :

failed to create a profile, will retry: rpc error: code = PermissionDenied
desc = The caller does not have permission.

Para resolver este problema, peça ao administrador que lhe conceda autorizações adicionais nesse projeto. Para ver uma lista detalhada das autorizações e funções necessárias, consulte o artigo Controlo de acesso.

Erros com o Node.js

Esta secção apresenta problemas que pode encontrar quando usa o agente de criação de perfis do Node.js e fornece sugestões sobre como corrigir cada um deles.

A aplicação não termina normalmente com o Node.js

O agente de criação de perfis para Node.js interfere com a saída normal do programa. Pode demorar até uma hora para que o programa termine depois de todas as tarefas no programa terem sido concluídas.

Para resolver este problema, emita um sinal SIGINT, por exemplo, através de Ctrl-C. Quando emite um sinal SIGINT, o processo termina normalmente.

Erros com Python

Esta secção apresenta problemas que pode encontrar quando usa o agente de criação de perfis do Python e fornece sugestões sobre como corrigir cada um deles.

NotImplementedError exceção com Python

A seguinte exceção é lançada durante a execução da função start quando a aplicação é executada num ambiente que não é Linux:

NotImplementedError

Para resolver este problema, execute a sua aplicação num ambiente Linux.

ValueError exceção com Python

A seguinte exceção é lançada durante start quando os argumentos da função são inválidos, quando não é possível determinar as informações necessárias a partir das variáveis de ambiente e dos argumentos, ou quando a criação de perfis de tempo de CPU e tempo real está desativada:

ValueError

Para resolver este problema, verifique o seguinte:

  • Certifique-se de que o nome e a versão do serviço cumprem os requisitos definidos nos argumentos de nome e versão do serviço.
  • Se a criação de perfis de paredes estiver ativada, certifique-se de que start é chamada a partir da thread principal.
  • Certifique-se de que está a usar uma versão suportada do Python e que a criação de perfis de tempo de CPU ou tempo real está ativada. Para mais informações, consulte a função start.
  • Verifique se especificou o parâmetro project_id como start se estiver a ser executado fora do Google Cloud. Para mais informações, consulte a função start.

Erros de recurso temporariamente indisponível com Python

O registo de erros contém as seguintes entradas após a ativação do Profiler:

BlockingIOError: [Errno 11] Resource temporarily unavailable
Exception ignored when trying to write to the signal wakeup fd

Estas mensagens ocorrem quando uma aplicação se regista no descritor de ficheiros de ativação de sinais, signal.set_wakeup_fd. Por predefinição, se o buffer do descritor de ficheiro ficar cheio, é registado um aviso no stderr.

Quando o Cloud Profiler recolhe perfis, aciona sinais com alta frequência e pode fazer com que o descritor de ficheiros de sinais fique cheio. Para o problema do GitHub, consulte o artigo BlockingIOError no App Engine.

Para resolver este problema, faça uma das seguintes ações:

  • Se a sua aplicação puder ser executada em segurança quando os sinais são perdidos, pode usar o Cloud Profiler. Se estiver a usar o Python 3.7 ou posterior e quiser desativar as mensagens de aviso, transmita warn_on_full_buffer=False como parâmetro para signal.set_wakeup_fd.

  • Se a sua aplicação não puder ser executada em segurança quando os sinais são perdidos, recomendamos que deixe de usar o Cloud Profiler. A utilização contínua pode causar a perda de números de sinais e entradas excessivas no registo de erros.

Todos os perfis em falta

Existem dois motivos comuns pelos quais pode não ver perfis:

  • O serviço não está em execução durante tempo suficiente para recolher perfis.
  • O serviço não está configurado para autenticação.

Para resolver problemas relacionados com um tempo de execução curto, certifique-se de que o seu serviço é executado continuamente durante, pelo menos, 3 minutos.

Para resolver problemas relacionados com a autenticação, certifique-se de que o agente de criação de perfis consegue escrever dados no seu Google Cloud projeto:

  • Se o seu serviço estiver a ser executado no Google Cloud, a autenticação é automática, exceto quando implementa um contentor no Compute Engine. Quando implementa um contentor no Compute Engine, tem de especificar o Google Cloud ID do projeto no comando do agente do Profiler start. Para ver instruções, consulte a secção Associar o agente a um Google Cloud projeto.