Solucionar problemas
En esta página se explica cómo resolver problemas con Cloud Profiler.
Errores en la configuración de tu proyecto Google Cloud
En esta sección se enumeran los problemas de configuración que puede encontrar y se ofrecen sugerencias para solucionarlos.
La API Cloud Profiler está inhabilitada
Se produce el siguiente error cuando la API Profiler no está habilitada en tu proyecto 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 solucionar este problema, tu proyecto Google Cloud debe tener habilitada la API Profiler:
-
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 theserviceusage.services.enablepermission. Learn how to grant roles. Si se muestra API habilitada, significa que la API ya está habilitada. Si no es así, haz clic en el botón Habilitar.
El método llamador no tiene permiso
Se produce el siguiente error cuando no tienes permiso para escribir datos de creación de perfiles en un proyecto de Google Cloud :
failed to create a profile, will retry: rpc error: code = PermissionDenied desc = The caller does not have permission.
Para solucionar este problema, pide a tu administrador que te conceda permisos adicionales en ese proyecto. Para ver una lista detallada de los permisos y roles necesarios, consulta Control de acceso.
Errores con Node.js
En esta sección se enumeran los problemas que puede encontrar al usar el agente de creación de perfiles de Node.js y se ofrecen sugerencias para solucionarlos.
La aplicación no se cierra normalmente con Node.js
El agente de creación de perfiles de Node.js interfiere con la salida normal del programa. El programa puede tardar hasta una hora en cerrarse después de que se hayan completado todas las tareas.
Para solucionar este problema, emite una señal SIGINT. Por ejemplo, puedes usar Ctrl-C. Cuando emites una señal SIGINT, el proceso finaliza correctamente.
Errores con Python
En esta sección se enumeran los problemas que puedes encontrar al usar el agente de creación de perfiles de Python y se ofrecen sugerencias para solucionarlos.
NotImplementedError con Python
Se produce la siguiente excepción durante la ejecución de la función start
cuando la aplicación se ejecuta en un entorno que no es Linux:
NotImplementedError
Para solucionar este problema, ejecuta tu aplicación en un entorno Linux.
ValueError con Python
Se produce la siguiente excepción durante start cuando los argumentos de la función no son válidos, cuando no se puede determinar la información necesaria a partir de las variables de entorno y los argumentos, o cuando se inhabilitan tanto el tiempo de CPU como el tiempo real.
ValueError
Para solucionar este problema, comprueba lo siguiente:
- Asegúrate de que el nombre y la versión del servicio cumplan los requisitos definidos en Argumentos de nombre y versión del servicio.
- Si el perfil de pared está habilitado, asegúrate de que se llame a
startdesde el hilo principal. - Asegúrate de que estás usando una versión compatible de Python y de que la creación de perfiles de tiempo de CPU o de tiempo real está habilitada. Para obtener más información, consulta la función
start. - Comprueba que has especificado el parámetro
project_idcomostartsi se ejecuta fuera de Google Cloud. Para obtener más información, consulta la funciónstart.
Errores de recurso no disponible temporalmente con Python
El registro de errores contiene las siguientes entradas después de habilitar el Profiler:
BlockingIOError: [Errno 11] Resource temporarily unavailable Exception ignored when trying to write to the signal wakeup fd
Estos mensajes se producen cuando una aplicación se registra con el descriptor de archivo de activación de señales, signal.set_wakeup_fd.
De forma predeterminada, si el búfer del descriptor de archivo se llena, se registra una advertencia en stderr.
Cuando Cloud Profiler recoge perfiles, activa señales con alta frecuencia y puede provocar que se llene el descriptor de archivo de señal. Para consultar el problema de GitHub, consulta BlockingIOError en App Engine.
Para solucionar este problema, haz una de las siguientes acciones:
Si tu aplicación puede ejecutarse de forma segura cuando se pierden las señales, puedes usar Cloud Profiler. Si usas Python 3.7 o una versión posterior y quieres inhabilitar los mensajes de advertencia, pasa
warn_on_full_buffer=Falsecomo parámetro asignal.set_wakeup_fd.Si tu aplicación no puede ejecutarse de forma segura cuando se pierden las señales, te recomendamos que dejes de usar Cloud Profiler. Si sigues usándolo, es posible que se pierdan números de señal y que haya demasiadas entradas en el registro de errores.
Faltan todos los perfiles
Hay dos motivos habituales por los que puede que no veas ningún perfil:
- El servicio no se ha ejecutado durante el tiempo suficiente para recoger perfiles.
- El servicio no está configurado para la autenticación.
Para solucionar los problemas relacionados con un tiempo de ejecución breve, asegúrate de que tu servicio se ejecute de forma continua durante al menos 3 minutos.
Para resolver los problemas relacionados con la autenticación, asegúrate de que el agente de creación de perfiles pueda escribir datos en tu proyecto de Google Cloud :
Si tu servicio se ejecuta en Google Cloud, la autenticación es automática, excepto cuando despliegas un contenedor en Compute Engine. Cuando implementas un contenedor en Compute Engine, debes especificar elGoogle Cloud ID de tu proyecto en el comando del agente de Profiler
start. Para obtener instrucciones, consulta el artículo sobre