Skalierung basierend auf der Anzahl der auf der EC2-Instanz ausgeführten Prozesse

Skalierung basierend auf der Anzahl der auf der EC2-Instanz ausgeführten Prozesse

Ich habe einen Anwendungsfall, bei dem mehrere Python-Skripte parallel auf ec2 ausgeführt werden. Sie lesen eine SQS-Warteschlange und führen Vorgänge wie Herunterladen von S3, Analysieren von Dateien, Aufteilen, Verarbeiten und Aktualisieren der Datenbank aus. Die Skripte werden alle 5 Minuten ausgeführt. Wenn SQS leer ist, tut das Skript nichts und wird beendet. Wenn SQS eine Nachricht enthält, wird sie vom Skript verarbeitet, das über eine Stunde lang ausgeführt werden kann. Die Ausführungsdauer variiert also.

Bei der automatischen Skalierung sehe ich, dass es eine Option zum Skalieren basierend auf der durchschnittlichen CPU-Auslastung gibt, aber die Zufälligkeit, mit der die CPU genutzt wird, macht sie zu einem schlechten Indikator dafür, wann skaliert werden soll (z. B. benötigt das Python-Skript mehr CPU, wenn es Festplatten-E/A-Operationen durchführt. Manchmal benötigt es aber Speicher, aber keine CPU).

Gibt es eine Möglichkeit, basierend auf der Anzahl der auf der EC2-Instanz laufenden Python-Prozesse zu skalieren? So dass die Instanzen hochskaliert werden, wenn die Anzahl der parallelen Aufrufe 10 erreicht?

Gibt es außerdem eine Möglichkeit anzugeben, dass die SkalierungNICHTDies geschieht bei einer EC2-Instanz, wenn mindestens ein Python-Prozess darin ausgeführt wird (selbst wenn dieser eine Prozess weniger als 5 % der CPU-Leistung beansprucht), da die Skalierung nach unten einen laufenden Prozess beenden würde und es besser wäre, wenn die Skalierung nach Abschluss des Python-Prozesses erfolgen könnte.

Auf dem Bild ist kein Load Balancer zu sehen.

verwandte Informationen