Risolvere i problemi di pubblicazione

Le sezioni seguenti trattano gli errori di inizializzazione e pubblicazione dell'app.

Errore di autorizzazione durante la creazione di un'app con l'account di servizio predefinito

Quando crei un'app dopo aver attivato l'API App Engine per la prima volta, l'operazione non va a buon fine con i seguenti errori:

Interfaccia a riga di comando 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

Richiedere log

Service account creation is not allowed on this project.

Console

Error while initialising App Engine.

Questo errore può verificarsi a causa dell'applicazione del vincolo del criterio dell'organizzazione constraints/iam.disableServiceAccountCreation durante la creazione dell'app. Questo criterio impedisce il provisioning dell' account di servizio predefinito di App Engine PROJECT_ID@appspot.gserviceaccount.com.

Per risolvere il problema, devi rimuovere temporaneamente il criterio dell'organizzazione il vincolo constraints/iam.disableServiceAccountCreation per consentire la creazione e il deployment dell'account di servizio predefinito di App Engine. Il valore predefinito l'account di servizio è necessario per la creazione dell'app e non può essere ignorato. Questo valore è anche applicabile se utilizzi un account di servizio per versione. L'account di servizio predefinito di App Engine può quindi essere eliminato o sostituito con un account di servizio che crei dopo aver eseguito il deployment.

Se utilizzi un account di servizio che hai creato, consulta la Panoramica dei suggerimenti per i ruoli. per capire come applicare la limitazione delle autorizzazioni, ad esempio fornendo una ruolo creatore di token per l'account di servizio che crei per l'agente di servizio.

Nginx non riesce a connettersi o a contattare il contenitore dell'app

Il seguente errore si verifica solo nell'ambiente flessibile di App Engine e in genere restituisce con Errori 502 subito dopo l'errore:

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

Questo errore indica che il proxy inverso nginx (il sidecar nginx) non è in grado di raggiungere il container dell'app. Nei log puoi confrontare la tempistica di chiusura dell'errore 502 nel log nginx con la tempistica del log nginx.error. Un file nginx.error seguito immediatamente da un errore 502 di nginx è probabile che la causa dell'errore .

Questo errore si verifica spesso quando il timeout keepalive della connessione del è minore del timeout keepalive di nginx. Poiché nginx nell'ambiente flessibile di App Engine ha un keepalive_timeout di 650 secondi, le applicazioni devono mantenere attive le connessioni per almeno questo periodo di tempo. Per impostazione predefinita, le applicazioni Node.js keepAliveTimeout di 5000 millisecondi. In questo caso, puoi impostare server.keepAliveTimeout su 700000 millisecondi.

Per risolvere il problema, controlla i log scritti dal codice in esecuzione nel contenitore dell'app collegandoti all'istanza VM e, se necessario, aggiungi altro logging per trovare la causa principale.

Memoria insufficiente

Il seguente errore si verifica nell'ambiente flessibile di App Engine e in genere restituisce con Errori 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

Questo errore indica che App Engine ha terminato l'applicazione.

Questo errore si verifica quando l'istanza ha memoria insufficiente. Per impostazione predefinita, l'ambiente flessibile di App Engine ha 1 GB di memoria, con solo 600 MB disponibili per il container dell'applicazione.

Per risolvere il problema, controlla i log e se viene visualizzata una voce Memoria insufficiente. Aggiorna il tuo memory_gb configurazione ed eseguire nuovamente il deployment.

Connessioni aperte insufficienti per gestire le richieste in entrata

Le app potrebbero visualizzare un errore 502 se il numero massimo di connessioni in attesa è uguale o superiore al 75% del numero di connessioni attive.

Per risolvere il problema, controlla le metriche di Cloud Monitoring per il numero massimo di connessioni attive e in attesa e diminuiscilo di connessioni in attesa per garantire che venga raggiunto il numero massimo è inferiore o uguale al 75% del numero di connessioni attive.