Instanzen sind Recheneinheiten, die von App Engine zur automatischen Skalierung einer Anwendung verwendet werden. Ihre Anwendung kann jederzeit auf einer oder mehreren Instanzen ausgeführt werden, wobei Anfragen auf alle Instanzen verteilt werden.
Instanzen mit manueller Skalierung sollten unbegrenzt laufen. Es gibt jedoch keine Verfügbarkeitsgarantie, da Instanzen aufgrund von Fehlern vorzeitig beendet werden oder die Updates neu gestartet werden können. Hardware- oder Softwarefehler, die zu einer vorzeitigen Beendigung oder zu häufigen Neustarts führen, können ohne Vorwarnung auftreten und viel Zeit für die Behebung in Anspruch nehmen.
Alle flexiblen Instanzen können wöchentlich neu gestartet werden, wenn Updates verfügbar sind. Dieser Zeitplan bietet keine Garantie. Beim Neustart werden kritische, abwärtskompatible Aktualisierungen automatisch auf das zugrunde liegende Betriebssystem übertragen. Das Image Ihrer Anwendung ändert sich bei Neustarts nicht.
Systemdiagnose
App Engine sendet regelmäßig Systemdiagnoseanfragen, um zu bestätigen, dass eine Instanz ausgeführt wird und um zu prüfen, ob eine Instanz vollständig gestartet wurde und bereit ist, eingehende Anfragen anzunehmen. Standardmäßig sind diese Systemdiagnosen aktiviert und werden als geteilte Systemdiagnosen bezeichnet. Eine Instanz, die eine Systemdiagnose empfängt, muss die Systemdiagnose innerhalb eines festgelegten Zeitintervalls beantworten.
Wenn Sie das Standardverhalten geteilter Systemdiagnosen für Ihre Anwendung erweitern müssen, passen Sie die Datei app.yaml
so an, dass zwei Arten von Systemdiagnosen konfiguriert werden:
- Mit Aktivitätsprüfungen wird festgestellt, ob eine VM-Instanz und ihr Container ausgeführt werden. Wenn eine VM-Instanz die Aktivitätsprüfung nicht besteht, wird sie automatisch neu gestartet. Aktivitätsprüfungen können aufgrund der konfigurierten Schwellenwerte und Zeitintervalle oder aufgrund des Absturzes des Containers fehlschlagen.
- Mit Bereitschaftsprüfungen wird ermittelt, ob eine VM-Instanz eingehende Anfragen annehmen kann. Wenn eine VM-Instanz die Bereitschaftsprüfung nicht besteht, bedeutet dies, dass die VM-Instanz ihren Start nicht abgeschlossen hat und nicht bereit ist, Anfragen zu empfangen. Wenn die VM-Instanz die Bereitschaftsprüfung besteht und ihren Start abgeschlossen hat, wird sie dem Pool der verfügbaren Instanzen hinzugefügt.
Weitere Informationen über das Verhalten der geteilten Systemdiagnosen finden Sie im Leitfaden Zu geteilten Systemdiagnosen migrieren.
Während die Instanz diese Systemdiagnosen durchläuft, kann in den App Engine-Logs angezeigt werden, dass sich die Instanz in einem der folgenden Status befindet:
- Fehlerfrei. Die Instanz hat die Systemdiagnoseanfragen erhalten und verarbeitet die Anfragen. Ein fehlerfreier Status gibt an, dass die Instanz mehr als 820 MB verfügbaren Speicherplatz hat und auf eine Systemdiagnose mit dem HTTP-Statuscode
200
antworten sollte. - Fehlerhaft. Die Instanz hat die Systemdiagnoseanfragen abgelehnt und nicht auf eine bestimmte Anzahl aufeinanderfolgender Systemdiagnoseanfragen geantwortet. App Engine sendet weiterhin Systemdiagnoseanfragen und startet die Instanz neu, wenn eine fehlerhafte Instanz weiterhin nicht auf eine vorher festgelegte Anzahl aufeinanderfolgender Systemdiagnosen antwortet.
- Lameduck Die Instanz wird planmäßig heruntergefahren oder neu gestartet.
Während des Herunterfahrens beendet die Instanz laufende Anfragen und lehnt neue Anfragen ab. Die App gibt einen
503
-Code zurück, um anzugeben, dass die Instanz Anfragen nicht verarbeiten kann. Das Shutdown-Skript hat nur wenig Zeit, bevor eine Instanz geschlossen wird oder neu startet, und kann nicht so konfiguriert werden, dass diese Zeit kürzer oder länger ist. - App Lameduck Die Instanz wird für die Bereitstellung von Traffic vorbereitet. Die Anwendung gibt einen
503
-Code zurück, um anzugeben, dass die Instanz Anfragen nicht verarbeiten kann. Wenn eine VM-Instanz den Start abgeschlossen hat und bereit ist, Traffic zu verarbeiten, wird die Instanz fehlerfrei und verarbeitet Anfragen. Wenn eine VM-Instanz nicht rechtzeitig gestartet wird, ändert sich die Instanz in einen fehlerhaften Zustand und wird entfernt.
Sowohl das Lameduck- als auch das App-Lameduck-Verhalten gehören zu einem normalen Prozess, den die VM-Instanz durchläuft.
Ressourcenauslastung überwachen
Auf der Seite „Instanzen“ der Google Cloud Console wird die Leistung Ihrer Instanzen angezeigt. Sie erhalten auf dieser Seite die Speicher- und CPU-Auslastung jeder Instanz, die Betriebszeit, die Anzahl der Anfragen und weitere statistische Werte. Sie können die Instanzen hier auch manuell herunterfahren.
NTP mit flexibler App Engine-Umgebung
Die flexiblen App Engine-Umgebungen haben NTP-Dienste (Network Time Protocol), die Google NTP-Server verwendet. Die NTP-Dienste in der flexiblen Umgebung können jedoch nicht bearbeitet werden.
Instanzstandort
Die Instanzen werden gemäß den Projekteinstellungen automatisch in den entsprechenden geografischen Regionen positioniert.
Instanzskalierung
Bei der Ausführung einer Anwendung werden eingehende Anfragen an eine vorhandene oder neue Instanz des entsprechenden Dienstes bzw. der entsprechenden Version weitergeleitet. Für jede aktive Version muss mindestens eine Instanz ausgeführt werden. Der Skalierungstyp eines Diensts bzw. einer Version steuert das Erstellen von zusätzlichen Instanzen.
Den Skalierungstyp müssen Sie in der Datei app.yaml
Ihrer Anwendung festlegen.
Standardmäßig verwendet Ihre Anwendung die automatische Skalierung, was bedeutet, dass App Engine die Anzahl der inaktiven Instanzen verwaltet.
- Autoscaling
- Beim Autoscaling werden Instanzen auf der Grundlage von Anfragerate, Antwortlatenz und anderen Anwendungsmesswerten erstellt. Sie können für jeden dieser Messwerte Schwellenwerte sowie die Mindestanzahl an Instanzen angeben, die immer ausgeführt werden sollen. Dazu konfigurieren Sie das Element
automatic_scaling
.
- Manuelle Skalierung
- Bei der manuellen Skalierung wird die Anzahl der Instanzen festgelegt, die unabhängig von der Arbeitslast kontinuierlich ausgeführt werden sollen. Dadurch sind Aufgaben wie komplexe Initialisierungen und Anwendungen möglich, die vom Zustand des Arbeitsspeichers im Zeitablauf abhängen.
Dienste verwalten
Je nach Skalierungstyp Ihrer Instanz können Sie Dienste und Versionen in der Google Cloud Console oder in der Google Cloud CLI verwalten.
Version beenden
Jede Version in der App Engine wird in einer oder mehreren Instanzen ausgeführt, je nachdem, für wie viel Traffic Sie sie konfiguriert haben.
Klicken Sie auf den Tab, um eine Anleitung zum Verwenden des gewünschten Tools zu erhalten.
Console
So beenden oder deaktivieren Sie eine Version für Ihren Dienst:
Rufen Sie in der Google Cloud Console die Seite Versionen der App Engine auf:
Wählen Sie eine Version aus der Tabelle aus und klicken Sie auf Beenden.
gcloud
Führen Sie den folgenden Befehl aus:
gcloud app versions stop --service=SERVICE VERSION
Ersetzen Sie:
- SERVICE durch den Namen des Dienstes.
- VERSION durch den Versionsnamen Ihres Dienstes.
Dienst entfernen
Dabei kann jeder Dienst so konfiguriert werden, dass er unterschiedliche Laufzeiten verwendet und mit unterschiedlichen Leistungseinstellungen arbeitet. Der Standarddienst kann nicht gelöscht werden. Wenn Sie einen Dienst löschen, werden auch alle zugehörigen Versionen in Ihrem Projekt gelöscht.
Klicken Sie auf den Tab, um eine Anleitung zum Verwenden des gewünschten Tools zu erhalten.
Console
So löschen Sie einen Dienst:
Rufen Sie in der Google Cloud Console die Seite App Engine-Dienste auf:
Wählen Sie einen Dienst aus der Tabelle aus und klicken Sie auf Löschen.
gcloud
Führen Sie den folgenden Befehl aus:
gcloud app services delete SERVICE
Ersetzen Sie:
- SERVICE durch den Namen des Dienstes.