Nebenläufigkeit

Bei der Bereitstellung mit Knative wird jede Überarbeitung automatisch auf die Anzahl der Containerinstanzen skaliert, die zum Verarbeiten aller eingehenden Anfragen erforderlich sind.

Wenn mehr Containerinstanzen Anfragen verarbeiten, werden mehr CPUs und mehr Arbeitsspeicher benötigt, was zu höheren Kosten führt. Wenn neue Containerinstanzen gestartet werden müssen, kann die Verarbeitung von Anfragen länger dauern, wodurch die Leistung Ihres Dienstes abnimmt.

Um Ihnen mehr Kontrolle zu geben, bietet die Bereitstellung von Knative eine Nebenläufigkeit-Einstellung, mit der die maximale Anzahl von Anfragen angegeben wird, die von einer bestimmten Containerinstanz gleichzeitig verarbeitet werden können.

Gleichzeitigkeitswerte

Standardmäßig können Knative-Bereitstellungscontainerinstanzen viele Anfragen gleichzeitig empfangen (bis zu 80). Im Vergleich zu FaaS-Lösungen (Function as a Service) wie Cloud Functions gilt eine feste Nebenläufigkeit von 1.

Sie sollten für die Nebenläufigkeit zwar den Standardwert verwenden, können bei Bedarf aber die maximale Nebenläufigkeit verringern. Wenn Ihr Code beispielsweise keine parallelen Anfragen verarbeiten kann, setzen Sie die Nebenläufigkeit auf 1.

Der angegebene Wert für die Nebenläufigkeit ist ein Maximalwert und die Bereitstellung von Knative sendet möglicherweise nicht so viele Anfragen an eine bestimmte Containerinstanz, wenn die CPU der Instanz bereits stark ausgelastet ist.

Das folgende Diagramm zeigt, wie sich die Gleichzeitigkeitseinstellung auf die Anzahl der Containerinstanzen auswirkt, die zur Verarbeitung eingehender gleichzeitiger Anfragen benötigt werden:

Gleichzeitigkeitsdiagramm

Wann Sie die Nebenläufigkeit auf maximal eine Anfrage beschränken sollten

Sie können die Nebenläufigkeit beschränken, sodass an jede ausgeführte Containerinstanz jeweils nur eine Anfrage gleichzeitig gesendet wird. Sie sollten dies in Fällen in Betracht ziehen, in denen Folgendes gilt:

  • Für jede einzelne Anfrage wird der größte Teil der verfügbaren CPU benötigt bzw. des verfügbaren Arbeitsspeichers belegt.
  • Ihr Container-Image ist nicht für die gleichzeitige Verarbeitung mehrerer Anfragen konzipiert, z. B. wenn Ihr Container auf den globalen Status angewiesen ist, der nicht von zwei Anfragen gemeinsam genutzt werden kann.

Eine Nebenläufigkeit von 1 wirkt sich wahrscheinlich negativ auf die Skalierungsleistung aus, da bei einem sprunghaften Anstieg eingehender Anfragen viele Containerinstanzen für deren Verarbeitung gestartet werden müssen.

Fallstudie

Die folgenden Messwerte zeigen einen Anwendungsfall, bei dem 400 Clients drei Anfragen pro Sekunde an einen Knative-Bereitstellungsdienst senden, der auf eine maximale Nebenläufigkeit von 1 festgelegt ist. In der grünen oberen Zeile sind die Anfragen im Zeitablauf aufgeführt, in der unteren blauen Zeile ist die Anzahl der Containerinstanzen angegeben, die mit der Verarbeitung der Anfragen begonnen haben.

Gleichzeitigkeit auf 1 festgelegt

Die folgenden Messwerte zeigen, dass 400 Clients drei Anfragen pro Sekunde an einen Knative-Bereitstellungsdienst senden, der auf eine maximale Nebenläufigkeit von 80 festgelegt ist. In der grünen oberen Zeile sind die Anfragen im Zeitverlauf aufgeführt, in der unteren blauen Zeile ist die Anzahl der Containerinstanzen angegeben, die mit der Verarbeitung der Anfragen begonnen haben. Beachten Sie, dass weit weniger Instanzen benötigt werden, um dasselbe Anfragevolumen zu verarbeiten.

Gleichzeitigkeit auf 80 festgelegt

Nächste Schritte

Informationen zum Verwalten der Nebenläufigkeit der Knative-Bereitstellungsdienste finden Sie unter Nebenläufigkeit festlegen.

Informationen zum Optimieren der Gleichzeitigkeitseinstellung finden Sie unter Tipps für Entwickler: Nebenläufigkeit optimieren.