Warum hat sich die Anzahl der laufenden Aufgaben in meinem Amazon-ECS-Service geändert?

Letzte Aktualisierung: 04.04.2022

Die Anzahl der laufenden Aufgaben in meinem Service aus dem Amazon Elastic Container Service (Amazon ECS) ist gestiegen oder gesunken.

Kurzbeschreibung

Die Anzahl der laufenden Aufgaben für Ihren Amazon-ECS-Service kann aus mehreren Gründen steigen oder sinken. Einige der häufigsten Ursachen sind:

  • Ihre Amazon-ECS-Aufgaben bestehen die Zustandsprüfung nicht.
  • AWS CloudFormation oder AWS Cloud Development Kit (AWS CDK) hat die gewünschte Anzahl im ECS-Service aktualisiert.
  • Sie haben die gewünschte Anzahl für Ihren ECS-Service manuell aktualisiert.
  • Der Amazon-ECS-Service Auto Scaling hat die Anzahl der Aufgaben basierend auf der Skalierungsrichtlinie aktualisiert.
  • Sie haben die Mindest- oder Höchstzahl in Application Auto Scaling mithilfe der API RegisterScalableTarget aktualisiert.
  • Durch die Bereitstellungskonfiguration Ihres ECS-Service wurde die Anzahl der laufenden Aufgaben während der Bereitstellung geändert.

Auflösung

Ihre ECS-Aufgaben bestehen die Zustandsprüfung nicht

CloudFormation oder AWS CDK hat die gewünschte Anzahl in Ihrem ECS-Service aktualisiert

Wenn Sie Ihren ECS-Service mit CloudFormation oder CDK ohne Angabe im Feld DesiredCount erstellt haben, wird die gewünschte Anzahl auf den Standardwert 1 festgelegt. Wenn der Service jedoch über CloudFormation oder CDK ohne Angabe im Feld DesiredCount aktualisiert wird, wird die vorhandene gewünschte Anzahl in der aktuellen Bereitstellung für die neue Bereitstellung verwendet.

Überprüfen Sie zur Behebung dieses Problems in den AWS-CloudTrail-Ereignissen, ob der Aufruf der API UpdateService von CloudFormation getätigt wurde. Sie können zu diesem Zweck auch überprüfen, ob im Feld userAgent im Abschnitt Event record Folgendes angegeben ist:

"userAgent": "cloudformation.amazonaws.com"

Um dieses Problem zu beheben, entfernen Sie während des Updates den Parameter desiredCount aus dem CloudFormation- oder CDK-Code.

Sie haben die gewünschte Anzahl für Ihren ECS-Service manuell aktualisiert

Wenn Sie den ECS-Service mithilfe der API UpdateService, der Amazon-ECS-Konsole oder des AWS Command Line Interface (AWS CLI) manuell aktualisiert haben, aktualisieren Sie den Service erneut, um die gewünschte Anzahl auf einen entsprechenden Wert zu ändern. Weitere Informationen finden Sie unter Aktualisieren eines Service und Update-Service.

Überprüfen Sie zur Behebung dieses Problems in den CloudTrail-Ereignissen, ob der Aufruf der API UpdateService von der Amazon-ECS-Konsole oder der AWS CLI aus getätigt wurde. Sie können diese Informationen im Feld userAgent im CloudTrail-Datensatz anzeigen.

Beispiel:

"userAgent": "console.amazonaws.com"

Der Amazon-ECS-Service Auto Scaling hat die Anzahl der Aufgaben basierend auf der Skalierungsrichtlinie aktualisiert

Der Amazon-ECS-Service Auto Scaling hat möglicherweise die gewünschte Anzahl basierend auf der Skalierungsrichtlinie erhöht oder verringert. Überprüfen Sie den Service auf kürzlich vorgenommene Skalierungsaktivitäten.

Gehen Sie zum Anzeigen der Skalierungsaktivitäten wie folgt vor:

  1. Öffnen Sie die Amazon-ECS-Konsole.
  2. Wählen Sie im Navigationsbereich Clusters.
  3. Wählen Sie den Cluster aus, den Sie prüfen möchten.
  4. Wählen Sie die Registerkarte Services.
  5. Wählen Sie den Service aus, den Sie prüfen möchten.
  6. Wählen Sie die Registerkarte Events.

Wenn es ein Skalierungsereignis gab, könnten Informationsmeldungen wie die folgenden in der Spalte Message angezeigt werden:

Successfully set desired count to 1. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/service-autoscaling/sample-webapp-AlarmLow-fcd80aef-5161-4890-aeb4-35dde11ff42c in state ALARM triggered policy TargetTrackingPolicy.

Wenn die Aufgaben aufgrund einer Skalierungsaktivität angehalten wurden, überprüfen Sie die Richtlinien für Zielverfolgung oder Schrittskalierung. Aktualisieren Sie dann die gewünschte Anzahl entsprechend den Anforderungen Ihrer Anwendung.

Gehen Sie zum Anzeigen der Konfiguration von Application Auto Scaling wie folgt vor:

  1. Öffnen Sie die Amazon-ECS-Konsole.
  2. Wählen Sie im Navigationsbereich Clusters.
  3. Wählen Sie den Cluster aus, den Sie prüfen möchten.
  4. Wählen Sie die Registerkarte Services.
  5. Wählen Sie den Service aus, den Sie prüfen möchten.
  6. Wählen Sie die Registerkarte Auto Scaling.
    Hinweis: Wenn Sie die neue Amazon-ECS-Konsole verwenden, wählen Sie Configuration and tasks und sehen Sie sich dann die Informationen unter Service configuration an.

Sie haben die Mindest- und Höchstzahl in Application Auto Scaling mithilfe der API RegisterScalableTarget aktualisiert

Wenn Sie das skalierbare Ziel mit der API RegisterScalableTarget aktualisiert haben, überprüfen Sie den in der API angegebenen Eigenschaftswert MinCapacity. Wenn Sie einen neuen Mindestwert angegeben haben, verwendet Application Auto Scaling diesen Wert als neuen Mindestwert, auf den die Aufgaben herunterskaliert werden können.

Hinweis: Application Auto Scaling skaliert die gewünschte Anzahl nicht auf weniger als den angegebenen Mindestwert herunter.

Durch die Bereitstellungskonfiguration Ihres ECS-Service wurde die Anzahl der laufenden Aufgaben während der Bereitstellung geändert

Überprüfen Sie in den CloudTrail-Ereignissen, ob die API UpdateService kürzlich aufgerufen wurde. Sie können die Bereitstellungskonfiguration Ihres ECS-Service über den Anforderungsparameter deploymentConfigration in der API UpdateService anzeigen lassen.

-oder-

Überprüfen Sie die Bereitstellungskonfiguration Ihres ECS-Service in der Amazon-ECS-Konsole, indem Sie die folgenden Schritte ausführen:

  1. Öffnen Sie die Amazon-ECS-Konsole.
  2. Wählen Sie im Navigationsbereich Clusters.
  3. Wählen Sie den Cluster aus, den Sie prüfen möchten.
  4. Wählen Sie die Registerkarte Services.
  5. Wählen Sie den Service aus, den Sie prüfen möchten.
  6. Wählen Sie die Registerkarte Deployments.

Die Bereitstellungskonfigurationsparameter steuern, wie viele Aufgaben während einer Bereitstellung ausgeführt werden und wie viele Aufgaben angehalten und gestartet werden. Wenn die Bereitstellungskonfiguration falsch festgelegt ist, wird die Anzahl der während der Bereitstellung ausgeführten Aufgaben reduziert. Daher empfiehlt es sich, den Wert des Parameters minimumHealthyPercent auf über 0 % zu konfigurieren.

Der Parameter minimumHealthyPercent stellt den unteren Grenzwert für einen der folgenden Vorgänge als Prozentsatz der gewünschten Anzahl von Aufgaben für den Service dar:

  • Anzahl der Aufgaben, die während einer Bereitstellung für einen Service ausgeführt werden sollen
  • Anzahl der Aufgaben, die ausgeführt werden sollen, wenn eine Container-Instance leer wird.

Der Wert dieses Parameters wird aufgerundet. Wenn beispielsweise minimumHealthyPercent 50 % und die gewünschte Anzahl von Aufgaben vier beträgt, kann der Scheduler zwei vorhandene Aufgaben beenden, bevor er zwei neue Aufgaben startet. Wenn minimumHealthyPercent 75 % beträgt und die gewünschte Anzahl von Aufgaben zwei beträgt, kann der Scheduler keine Aufgaben beenden, da der resultierende Wert ebenfalls zwei beträgt.

Der Parameter maximumPercent stellt die Obergrenze für einen der folgenden Vorgänge als Prozentsatz der gewünschten Anzahl von Aufgaben für einen Service dar:

  • Anzahl der Aufgaben, die während einer Bereitstellung für einen Service ausgeführt werden sollen
  • Anzahl der Aufgaben, die ausgeführt werden sollen, wenn eine Container-Instance leer wird.

Der Wert dieses Parameters wird abgerundet. Wenn maximumPercent beispielsweise 200 % und die gewünschte Anzahl von Aufgaben vier beträgt, kann der Scheduler vier neue Aufgaben starten, bevor er vier vorhandene Aufgaben stoppt. Wenn maximumPercent 125 % beträgt und die gewünschte Anzahl von Aufgaben drei ist, kann der Scheduler keine Aufgaben starten, da der resultierende Wert ebenfalls drei beträgt.

Weitere Informationen finden Sie unter Laufende Aktualisierung.