
Tengo un caso de uso en el que se ejecutarán varios scripts de Python en paralelo en ec2. Leen una cola SQS y realizan operaciones como descargar desde S3, analizar archivos, dividir, procesar y actualizar la base de datos. Los scripts se ejecutan cada 5 min. Si SQS está vacío, el script no hace nada y sale. Si SQS tiene un mensaje, el script lo procesa y puede ejecutarse durante más de una hora. Entonces las duraciones de las carreras varían.
En el escalado automático, veo que hay una opción para escalar en función de la utilización promedio de la CPU, pero la aleatoriedad con la que se utiliza la CPU hace que no sea un buen indicador de cuándo escalar (por ejemplo, el script de Python consumirá más CPU mientras se realizan operaciones de IO en el disco. Pero otras veces requiere memoria pero no CPU)
¿Hay alguna forma de escalar en función de la cantidad de procesos de Python que se ejecutan en la instancia ec2? ¿De modo que cuando el número de invocaciones paralelas llegue a 10, las instancias aumenten de escala?
Además, ¿hay alguna forma de especificar que se debe reducir la escala?NOEsto sucede para una instancia ec2 si tiene al menos un proceso de Python ejecutándose dentro de ella (incluso si ese proceso está consumiendo <5% de CPU), porque la reducción terminaría un proceso en curso y sería mejor si la reducción pudiera ocurrir. después de que se complete el proceso de Python
No hay ningún equilibrador de carga en la imagen.