In den folgenden Abschnitten werden Fehler bei der App-Initialisierung und beim Bereitstellen behandelt.
Berechtigungsfehler beim Erstellen einer Anwendung mit dem Standarddienstkonto
Wenn Sie eine Anwendung erstellen, nachdem Sie die App Engine API zum ersten Mal aktiviert haben, schlägt sie mit folgenden Fehlern fehl:
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
Anforderungsprotokolle
Service account creation is not allowed on this project.
Console
Error while initialising App Engine.
Dieser Fehler kann aufgrund der Erzwingung der Organisationsrichtlinieneinschränkung constraints/iam.disableServiceAccountCreation
beim Erstellen Ihrer Anwendung auftreten. Diese Richtlinie verhindert die Bereitstellung des App Engine-Standarddienstkontos PROJECT_ID@appspot.gserviceaccount.com
.
Um dieses Problem zu beheben, müssen Sie die Einschränkung der Organisationsrichtlinie constraints/iam.disableServiceAccountCreation
vorübergehend entfernen, damit das App Engine-Standarddienstkonto erstellt und bereitgestellt werden kann. Das Standarddienstkonto ist für die App-Erstellung erforderlich und kann nicht übersprungen werden. Das gilt auch, wenn Sie ein versionsspezifisches Dienstkonto verwenden.
Das App Engine-Standarddienstkonto kann dann gelöscht oder durch ein Dienstkonto ersetzt werden, das Sie nach der erfolgreichen Bereitstellung erstellen.
Wenn Sie ein von Ihnen erstelltes Dienstkonto verwenden, lesen Sie die Übersicht über Rollenempfehlungen, um zu verstehen, wie Sie eingeschränkte Berechtigungen erzwingen können, z. B. durch Bereitstellen einer Tokenersteller-Rolle für das Dienstkonto, das Sie für den Dienst-Agent erstellen.
Nginx kann keine Verbindung zu dem Anwendungscontainer herstellen oder diese kontaktieren
Der folgende Fehler tritt nur in der flexiblen App Engine-Umgebung auf und wird in der Regel sofort nach dem Fehler mit 502-Fehlern zurückgegeben:
recv() failed (104: Connection reset by peer) while reading response header from upstream
Dieser Fehler gibt an, dass der nginx-Reverse-Proxy (nginx-Sidecar) den Anwendungscontainer nicht erreichen kann. In den Logs können Sie die Schließen-Zeit des 502-Fehlers im nginx-Log mit dem Zeitpunkt des nginx.error-Logs vergleichen. Ein nginx.error gefolgt von einem 502 nginx-Fehler ist wahrscheinlich die Ursache des nginx 502-Fehlers.
Dieser Fehler tritt häufig auf, wenn das Keepalive-Zeitlimit der Verbindung für die Anwendung kleiner ist als das Keepalive-Zeitlimit von nginx. Da nginx in der flexiblen App Engine-Umgebung ein keepalive_timeout
von 650 Sekunden hat, müssen Anwendungen die Verbindungen mindestens so lange aktiv halten. Standardmäßig haben Node.js-Anwendungen eine keepAliveTimeout
von 5.000 Millisekunden. In diesem Fall können Sie für server.keepAliveTimeout
700.000 Millisekunden festlegen.
Zur Fehlerbehebung können Sie die Logs prüfen, die vom Code im Anwendungscontainer geschrieben wurden. Dazu stellen Sie eine Verbindung zur VM-Instanz her und fügen bei Bedarf weitere Logging-Daten hinzu, um die Ursache zu ermitteln.
Unzureichender Speicher
Der folgende Fehler tritt in der flexiblen App Engine-Umgebung auf und gibt in der Regel den Fehler 502 zurückgegeben:
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
Dieser Fehler gibt an, dass App Engine die Anwendung beendet hat.
Dieser Fehler tritt auf, wenn die Instanz nicht genügend Speicher hat. Standardmäßig hat die flexible App Engine-Umgebung 1 GB Speicher, wobei dem Anwendungscontainer lediglich 600 MB zur Verfügung stehen.
Prüfen Sie, ob in den Logs ein Eintrag in Bezug auf fehlenden Speichers vorliegt, um das Problem zu beheben. Aktualisieren Sie Ihre Konfiguration von memory_gb
und stellen Sie noch einmal bereit.
Unzureichende offene Verbindungen zum Verarbeiten eingehender Anfragen
Bei Anwendungen wird möglicherweise der Fehler 502 angezeigt, wenn die maximale Anzahl der wartenden Verbindungen gleich oder größer als 75% der Anzahl aktiver Verbindungen ist.
Prüfe zur Behebung des Problems die Cloud Monitoring-Messwerte für die maximale Anzahl aktiver und wartender Verbindungen und verringere die Anzahl der wartenden Verbindungen, um sicherzustellen, dass die maximale Anzahl der wartenden Verbindungen gleich oder weniger als 75% der Anzahl aktiver Verbindungen beträgt.