Комментарии 4
В чем вообще смысл автоскейла. Селери то скейлится на уровне тачки, значит на ней должны быть зарезервированы ресурсы под скейл, то есть они будут простаивать пока задач нет, а потом тупить раскручиваться
Смысл автоскейла -- это увеличение пропускной способности воркера в очереди, где нагрузка нестабильна, но очередь не должна пухнуть. Тут нам и предстоит ломать голову, где включать, а где нет
К примеру, у вас есть редкое(раз в 10 минут) событие(проверка на начало акции в торговом зале), которое порождает полтыщи задач. В ту же очередь поступают другие задачи(обработка новых акций) это событие достаточно редкое(опираемся на поведение пользователя), но важное и должно быстро обрабатываться, так как пользователь мог на ближайшее время назначить акцию и ему важно, чтобы цены поменялись.
Вы настраиваете на эту очередь воркер autoscale=3,1.
Здесь три важных для разрабочика момента:
Он мало занимает ресурсов(1 процесс) в нормальном состоянии(обработка новых акций)
Предварительно мощности не резервируются и ничего не простаивает(планировщик бдит)
Два дополнительных процесса помогают быстрее прийти к "нормальному" состоянию очереди
потом тупить раскручиваться
Ох. Ну, не без этого. Это все-таки инструмент для специфичных задач. Можно его, конечно, использовать для омоложения процессов, но лучше настроить max-tasks-per-child
Так почему сразу не поднять 4 воркера и пусть ждут задач
Как раз при concurrency=4 будет "резервирование" ресурсов, точнее потребление, так как процессы созданы, а каждый процесс хранит в себе Python-библиотеки. Можете проверить сколько памяти потребляет один процесс, посмотрев htop с фильтром celery.
Дальше уже начинает влиять переключение контекста, инвалидация кэша процессора, локальные(возможные!) утечки памяти рабочего процесса. Да, для 4 процессов это мизер. А если 100 процессов или у вас воркер зависит от тяжеловесных библиотек, типа pandas?
Многое зависит от контекста какая предвыборка, docker ли, какие соседи, проч.
Надеюсь, что под "4 воркера" вы имели ввиду именно рабочие процессы, а не инстансы

Celery Autoscale: что в лоб — то по лбу?