Soluciona problemas de publicación

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.