![ec2 インスタンスで実行されているプロセスの数に基づいてスケーリングする](https://rvso.com/image/769286/ec2%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E6%95%B0%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B.png)
複数の Python スクリプトを ec2 で並行して実行するユースケースがあります。スクリプトは SQS キューを読み取り、S3 からのダウンロード、ファイルの解析、分割、処理、データベースの更新などの操作を実行します。スクリプトは 5 分ごとに実行されます。SQS が空の場合、スクリプトは何もせずに終了します。SQS にメッセージがある場合は、スクリプトによって処理され、1 時間以上実行される場合があります。そのため、実行期間は異なります。
自動スケーリングでは、平均 CPU 使用率に基づいてスケーリングするオプションがありますが、CPU が使用されるランダム性により、スケーリングのタイミングを示す良い指標にはなりません (たとえば、Python スクリプトはディスク IO 操作中に CPU を多く使用します。ただし、他の場合にはメモリは使用しますが CPU は使用しません)。
ec2 インスタンスで実行されている Python プロセスの数に基づいてスケーリングする方法はありますか? 並列呼び出しの数が 10 に達すると、インスタンスがスケールアップするようになりますか?
さらに、スケールダウンを指定する方法はありますか?ないec2 インスタンス内で少なくとも 1 つの Python プロセスが実行されている場合 (その 1 つのプロセスが CPU の 5% 未満しか使用していない場合であっても)、スケールダウンによって進行中のプロセスが終了するため、スケールダウンが Python プロセスの完了後に発生する方が望ましいため、スケールダウンが発生します。
写真にはロードバランサーがありません。