Instanzverwaltung

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.