En las siguientes secciones, se abordan los errores de inicialización y entrega de la app.
Error de permiso cuando se crea una app con la cuenta de servicio predeterminada
Cuando creas una app después de habilitar la API de App Engine por primera vez, falla con los siguientes errores:
gcloud CLI
An internal error occurred while calling service consumer manager for service account.
Creating App Engine application in project [PROJECT__ID] and [REGION]....failed. DEBUG: (gcloud.app.create) Error Response: [13] an internal error has occurred
Solicita registros.
Service account creation is not allowed on this project.
Console
Error while initialising App Engine.
Este error puede ocurrir debido a la aplicación de la restricción de la política de la organización constraints/iam.disableServiceAccountCreation
cuando se crea tu
app. Esta política evita el aprovisionamiento de la cuenta de servicio predeterminada de App Engine PROJECT_ID@appspot.gserviceaccount.com
.
Para resolver este problema, debes quitar de forma temporal la restricción constraints/iam.disableServiceAccountCreation
de la política de la organización para permitir la creación y la implementación de la cuenta de servicio predeterminada de App Engine. La cuenta
de servicio predeterminada es necesaria para crear la app y no se puede omitir. Esto también se
aplica cuando usas una cuenta de servicio por versión.
La cuenta de servicio predeterminada de App Engine se puede borrar o reemplazar
por una cuenta de servicio que crees después de una implementación realizada de forma correcta.
Si usas una cuenta de servicio que creaste, revisa la Descripción general de las recomendaciones de roles para comprender cómo aplicar la restricción de permisos, como proporcionar una función de creador de tokens en la cuenta de servicio que creas para el agente de servicio.
Nginx no se puede conectar ni comunicar con el contenedor de la app
El siguiente error solo ocurre en el entorno flexible de App Engine y, por lo general, se muestra inmediatamente como error 502 después de que sucede:
recv() failed (104: Connection reset by peer) while reading response header from upstream
Este error indica que el proxy inverso de nginx (archivo adicional de nginx) no puede acceder al contenedor de la app. En los registros, puedes comparar el tiempo cercano del error 502 en el registro de nginx con el tiempo del registro de nginx.error. Es probable que un error nginx.error seguido inmediatamente de un error 502 de nginx sea la causa de este error.
Este error ocurre a menudo cuando el tiempo de espera de la conexión keepalive de la aplicación es menor que el tiempo de espera de keepalive de nginx. Como nginx en el entorno flexible de App Engine tiene keepalive_timeout
de 650 segundos, las aplicaciones deben mantener las conexiones en funcionamiento durante al menos este tiempo. De forma predeterminada, las aplicaciones de Node.js tienen keepAliveTimeout
de 5,000 milisegundos. En este caso, puedes establecer server.keepAliveTimeout
en 700,000 milisegundos.
Para solucionar el problema, verifica los registros escritos por el código que se ejecuta en el contenedor de tu app mediante la conexión a la instancia de VM y agrega más registros, si es necesario, a fin de encontrar la causa raíz.
Memoria insuficiente
El siguiente error ocurre en el entorno flexible de App Engine y, por lo general, se muestra con errores 502:
kernel: [ 133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child kernel: [ 133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0kB
Este error indica que App Engine cerró la aplicación.
Este error ocurre cuando la instancia no tiene memoria suficiente. De forma predeterminada, el entorno flexible de App Engine tiene 1 GB de memoria, con solo 600 MB disponibles para el contenedor de la aplicación.
Para solucionar el problema, verifica los registros y si ves una entrada de memoria insuficiente. Actualiza tu configuración de memory_gb
y vuelve a implementarla.
Conexiones abiertas insuficientes para manejar solicitudes entrantes
Las apps pueden encontrar un error 502 si la cantidad máxima de conexiones en espera es igual o mayor que el 75% de la cantidad de conexiones activas.
Para resolver el problema, verifica las Métricas de Cloud Monitoring para descubrir la cantidad máxima de conexiones activas y en espera, y disminuye la cantidad de conexiones en espera para garantizar que la cantidad máxima de conexiones en espera sea menor o igual que el 75% de la cantidad de conexiones activas.