Résoudre les problèmes de diffusion

Les sections suivantes décrivent les erreurs d'initialisation et de diffusion des applications.

Erreur d'autorisation lors de la création d'une application avec le compte de service par défaut

Lorsque vous créez une application après avoir activé l'API App Engine pour la première fois, elle échoue avec les erreurs suivantes :

CLI gcloud

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

Journaux des requêtes

Service account creation is not allowed on this project.

Console

Error while initialising App Engine.

Cette erreur peut se produire en raison de l'application de la contrainte de règle d'administration constraints/iam.disableServiceAccountCreation lors de la création de votre application. Cette règle empêche le provisionnement du compte de service App Engine par défaut PROJECT_ID@appspot.gserviceaccount.com.

Pour résoudre ce problème, vous devez supprimer temporairement la contrainte de règle d'administration constraints/iam.disableServiceAccountCreation pour permettre la création et le déploiement du compte de service App Engine par défaut. Le compte de service par défaut est nécessaire pour la création de l'application et ne peut pas être ignoré. Cela est également applicable lorsque vous utilisez un compte de service par version. Le compte de service App Engine par défaut peut ensuite être supprimé ou remplacé par un compte de service que vous créez une fois le déploiement réussi.

Si vous utilisez un compte de service que vous avez créé, consultez Présentation des recommandations de rôle pour comprendre comment appliquer des autorisations restreintes, par exemple pour attribuer un rôle de créateur de jetons au compte de service créé pour l'agent de service.

Nginx ne parvient pas à se connecter ou à contacter le conteneur d'application

L'erreur suivante ne se produit que dans l'environnement flexible App Engine et renvoie généralement des erreurs 502 immédiatement après l'erreur:

recv() failed (104: Connection reset by peer) while reading response header from upstream

Cette erreur indique que le proxy inverse nginx (side-car nginx) ne parvient pas à atteindre le conteneur d'application. Dans les journaux, vous pouvez comparer le délai de fermeture de l'erreur 502 dans le journal nginx avec le délai du journal nginx.error. Une erreur nginx.error suivie immédiatement d'une erreur 502 nginx est probablement la cause de l'erreur nginx 502.

Cette erreur se produit souvent lorsque le délai d'expiration de la connexion keepalive de l'application est inférieur au délai d'expiration keepalive de nginx. Comme nginx dans l'environnement flexible App Engine possède un keepalive_timeout de 650 secondes, les applications doivent maintenir les connexions actives pendant au moins cette durée. Par défaut, les applications Node.js possède un keepAliveTimeout de 5 000 millisecondes. Dans ce cas, vous pouvez définir server.keepAliveTimeout sur 700 000 millisecondes.

Pour résoudre le problème, consultez les journaux écrits par le code exécuté dans le conteneur de votre application en vous connectant à l'instance de VM et ajoutez, si nécessaire, d'autres journaux pour en identifier la cause.

Mémoire insuffisante

L'erreur suivante se produit dans l'environnement flexible App Engine et renvoie généralement des erreurs 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

Cette erreur indique qu'App Engine a arrêté l'application.

Cette erreur se produit lorsque l'instance dispose d'une mémoire insuffisante. Par défaut, l'environnement flexible App Engine dispose de 1 Go de mémoire, avec seulement 600 Mo pour le conteneur d'applications.

Pour résoudre le problème, consultez les journaux et vérifiez si vous voyez une entrée de mémoire insuffisante. Mettez à jour votre configuration memory_gb et redéployez l'application.

Connexions ouvertes insuffisantes pour gérer les requêtes entrantes

Les applications peuvent rencontrer une erreur 502 si le nombre maximal de connexions en attente est égal ou supérieur à 75 % du nombre de connexions actives.

Pour résoudre le problème, consultez les Métriques Cloud Monitoring pour le nombre maximal de connexions actives et en attente, puis diminuez le nombre de connexions en attente pour vous assurer que le nombre maximal de connexions en attente est inférieur ou égal à 75 % du nombre de connexions actives.