![Масштабирование на основе количества процессов, запущенных на экземпляре ec2](https://rvso.com/image/769286/%D0%9C%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5%20%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2%2C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D0%BD%D0%B0%20%D1%8D%D0%BA%D0%B7%D0%B5%D0%BC%D0%BF%D0%BB%D1%8F%D1%80%D0%B5%20ec2.png)
У меня есть вариант использования, в котором несколько скриптов Python будут работать параллельно на ec2. Они считывают очередь SQS и выполняют такие операции, как загрузка из S3, разбор файлов, разделение, обработка и обновление базы данных. Скрипты запускаются каждые 5 минут. Если SQS пуст, скрипт ничего не делает и завершает работу. Если в SQS есть сообщение, оно обрабатывается скриптом, который может работать более часа. Поэтому длительность выполнения варьируется.
В автоматическом масштабировании я вижу возможность масштабирования на основе средней загрузки ЦП, но случайность, с которой используется ЦП, делает его не лучшим индикатором, когда следует масштабировать (например, скрипт Python будет потреблять больше ресурсов ЦП при выполнении операций ввода-вывода с диска. Но в других случаях он потребляет память, но не ЦП).
Есть ли способ масштабирования на основе количества процессов python, запущенных на экземпляре ec2? Так, чтобы когда количество параллельных вызовов достигло 10, экземпляры масштабировались?
Кроме того, есть ли способ указать, что уменьшение масштаба должно бытьНЕТпроизойдет для экземпляра ec2, если внутри него запущен хотя бы один процесс python (даже если этот процесс потребляет <5% ресурсов процессора), поскольку уменьшение масштаба завершит текущий процесс, и было бы лучше, если бы уменьшение масштаба могло произойти после завершения процесса python.
На рисунке нет балансировщика нагрузки.