Zeitlimit für Funktion
Wenn eine Funktion zu lange ausgeführt wird, unternimmt das System Maßnahmen, um sie zu beenden oder zu drosseln. Dieses Zeitlimit beträgt standardmäßig 60 Sekunden. Sie können es jedoch bei der Bereitstellung der Funktion verlängern oder reduzieren:
- In Cloud Functions (1. Generation) beträgt die maximale Zeitüberschreitung neun Minuten (540 Sekunden).
- In Cloud Functions (2. Generation) beträgt die maximale Zeitüberschreitung 60 Minuten (3600 Sekunden) für HTTP-Funktionen und 9 Minuten (540 Sekunden) für ereignisgesteuerte Funktionen.
Wenn die Ausführung der Funktion das Zeitlimit erreicht, hängt die Systemantwort davon ab, ob es sich um eine Funktion der 1. Generation oder die 2. Generation handelt.
- 1. Generation: Eine Antwortnachricht mit dem HTTP-Fehlerstatus, im Allgemeinen 408, wird sofort an den Aufrufer zurückgegeben. Funktionsausführung wurde angehalten.
- 2. Generation: Eine Antwortnachricht mit dem HTTP-Fehler 504 wird sofort an den Aufrufer zurückgegeben. Die Funktionsinstanz kann gedrosselt werden, funktioniert jedoch so lange, bis sie von selbst beendet wird. Jede von der Funktion generierte Antwortnachricht wird verworfen und nicht an den Aufrufer zurückgegeben.
Dieses Verhalten von Funktionen der zweiten Generation kann zu unerwarteten Nebenwirkungen führen. Ein häufiges Symptom ist, dass es scheint, die Arbeit und der Logs von einer Anfrage würden in eine nachfolgende Anfrage "überlaufen". Um dies zu vermeiden, verhindern Sie Zeitüberschreitungen in Ihren Funktionen mit den folgenden Methoden:
- Legen Sie ein Zeitlimit fest, das über der erwarteten Ausführungszeit liegt.
- Verfolgen Sie die verbleibende Ausführungszeit. Führen Sie dann eine Bereinigung durch und kehren Sie frühzeitig zurück.
Zeitlimit festlegen
Sie können das Zeitlimit einer Funktion während der Bereitstellung über die Google Cloud-Befehlszeile oder die Google Cloud Console festlegen.
gcloud
Wenn Sie die gcloud-Befehlszeile verwenden, verwenden Sie das Flag --timeout
:
gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...
Wenn Sie eine vorhandene Zeitüberschreitung mit der Google Cloud CLI bearbeiten möchten, stellen Sie die Funktion einfach mit einem neuen Zeitüberschreitungswert noch einmal bereit.
Console
So legen Sie das Zeitlimit während der Funktionserstellung in der Google Cloud Console fest:
- Gehen Sie zur Cloud Functions-Übersichtsseite in der Google Cloud Console.
- Klicken Sie auf Funktion erstellen.
- Füllen Sie die erforderlichen Felder für die Funktion aus.
- Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.
Geben Sie in das Feld Zeitlimit eine Anzahl von Sekunden ein.
Wenn Sie eine vorhandene Zeitüberschreitung in der Google Cloud Console bearbeiten möchten, klicken Sie auf der Übersichtsseite der Funktion auf den Namen der gewünschten Funktion, um die zugehörige Detailseite aufzurufen. Klicken Sie auf der Detailseite auf Bearbeiten, maximieren Sie den Bereich Laufzeit, Build... und klicken Sie dann auf den Tab Laufzeit. Dort können Sie den Wert direkt im Feld Zeitlimit bearbeiten.