В моем конфигурационном файле /etc/defaults/celeryd
я установил:
CELERYD_NODES="agent1 agent2 agent3 agent4 agent5 agent6 agent7 agent8"
CELERYD_OPTS="--autoscale=10,3 --concurrency=5"
Я понимаю, что демона порождает 8 работников сельдерея, но я не уверен, что делать autoscale
и concurrency
вместе. Я думал, что concurrency - это способ указать максимальное количество потоков, которые рабочий может использовать, а автомасштабирование - это способ, чтобы работник мог масштабировать вверх и вниз детей-работников, если это необходимо.
Задачи имеют большую полезную нагрузку (около 20-50 кБ), и есть около 2-3 миллионов таких задач, но каждая задача выполняется менее чем за секунду. Я вижу, как память использует всплеск, потому что брокер распределяет задачи каждому работнику, тем самым повторяя многократно полезную нагрузку.
Я думаю, что проблема в конфигурации и что комбинация рабочих + concurrency + автомасштабирование является чрезмерной, и я хотел бы лучше понять, что делают эти три варианта.