Рейтинг:1

Масштабирование на основе количества процессов, запущенных на экземпляре ec2

флаг gr

У меня есть вариант использования, когда несколько скриптов Python будут работать параллельно на ec2. Они читают очередь SQS и выполняют такие операции, как загрузка из S3, анализ файлов, разделение, обработка и обновление базы данных. Скрипты запускаются каждые 5 минут. Если SQS пуст, скрипт ничего не делает и завершает работу. Если у SQS есть сообщение, оно обрабатывается сценарием, который может выполняться более часа. Так что продолжительность пробега разная.

В автоматическом масштабировании я вижу, что есть возможность масштабирования на основе среднего использования ЦП, но случайность, с которой используется ЦП, делает его не очень хорошим индикатором, когда масштабировать (например, скрипт Python будет потреблять больше ЦП при выполнении операций ввода-вывода на диске. Но в других случаях требует памяти, но не процессора)

Есть ли способ масштабирования в зависимости от количества процессов python, запущенных в экземпляре ec2? Так что, когда количество параллельных вызовов достигает 10, количество экземпляров увеличивается?

Кроме того, есть ли способ указать, что масштабирование должно НЕТ произойдет для экземпляра ec2, если в нем запущен хотя бы один процесс python (даже если этот процесс занимает <5% ЦП), потому что уменьшение масштаба завершит текущий процесс, и было бы лучше, если бы масштабирование могло произойти после завершения процесса python

На картинке нет балансировщика нагрузки.

Rohini avatar
флаг gr
Я рассмотрел идею запуска лямбда с триггером SQS для каждого сообщения, которое получает SQS. Теоретически это означает, что по мере увеличения количества сообщений происходит больше вызовов функций, поэтому он масштабируется. Но https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html указывает время ожидания для любой лямбды как 15 минут. Это не подходит для моего варианта использования, так как обработка python может занять более часа.
Oscar De León avatar
флаг la
Как насчет управления автомасштабированием изнутри экземпляра? Мне кажется, у вас есть какой-то механизм управления сценарием, поэтому, возможно, вы можете использовать его для масштабирования, когда это необходимо, и когда больше нет необходимости в запуске экземпляра, вы можете уменьшить масштаб. В июле этого года они добавили функцию, чтобы выбрать, какой instance для завершения при масштабировании. Возможно, это поможет https://aws.amazon.com/about-aws/whats-new/2021/07/amazon-ec2-auto-scaling-now-lets-you-control-what экземпляры для прекращения масштабирования/

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.