Am un caz de utilizare în care mai multe scripturi Python vor rula în paralel pe ec2.
Ei citesc o coadă SQS și efectuează operațiuni cum ar fi descărcarea din S3, analizarea fișierelor, împărțirea, procesarea și actualizarea bazei de date.
Scripturile rulează la fiecare 5 minute. Dacă SQS este gol, scriptul nu face nimic și iese. Dacă SQS are un mesaj, acesta este procesat de scriptul care poate rula mai mult de o oră. Deci duratele de rulare variază.
În scalarea automată, văd că există opțiune de scalare pe baza utilizării medii a procesorului, dar caracterul aleatoriu cu care este utilizat CPU-ul face ca acesta să nu fie un indicator bun când să scalați (de exemplu, scriptul Python va lua mai mult CPU în timp ce face operațiuni cu disc io. Dar alteori este nevoie de memorie, dar nu are cpu)
Există o modalitate de a scala în funcție de numărul de procese Python care rulează pe instanța ec2?
Deci, atunci când numărul de invocări paralele ajunge la 10, instanțele cresc?
Mai mult, există o modalitate de a specifica că reducerea ar trebui să fie redusă NU se întâmplă pentru o instanță ec2 dacă are cel puțin un proces Python care rulează în ea (chiar dacă acel proces ia <5% CPU), deoarece reducerea reducerii ar încheia un proces în desfășurare și ar fi mai bine dacă reducerea se poate întâmpla după finalizarea procesului python
Nu există un echilibrator de încărcare în imagine.