Я начал использовать сельдерей для задач в веб-проекте Python/Django, размещенном на одной виртуальной машине с 8 ядрами или процессорами. Мне нужно улучшить конфигурацию сейчас - я сделал ошибки новобранец.Исправление неправильно настроенного сельдерея (работает с супервизором)
Я использую supervisor
для обработки работников сельдерея и избиения. В /etc/supervisor/conf.d/
у меня есть два файла-менеджера, связанные с работой, - celery1.conf
и celery1.conf
. Должен ли я ...
1) Удалить один из них? Оба порождаются разными работниками. То есть в первом файле conf command=python manage.py celery worker -l info -n celeryworker1
. Последний имеет command=python manage.py celery worker -l info -n celeryworker2
. И авторитетно stated here для запуска 1 рабочего на машину.
2) Тинкер с numprocs
в конф. В настоящее время в celery1.conf
, я определил numprocs=2
. В celery2.conf
, я определил numprocs=3
* (см. Нижний колонтитул позже). В то же время, в /etc/default/celeryd
, у меня есть CELERYD_OPTS="--time-limit=300 --concurrency=8"
. Так, что происходит? у супервизора numprocs
имеет преимущество перед concurrency
в сельдереем, или что? Должен ли я установить numprocs=0
?
* total numprocs над обоими файлами = 2 + 3 = 5. Это проверяет. sudo supervisorctl
показывает 5 рабочих процессов сельдерея. Но в newrelic я вижу 45 процессов, выполняющихся для celeryd. Какого черта?! Даже если каждая проза, созданная супервизором, фактически рождает 8 проков (через celeryd), всего numprocs x concurrency = 5 x 8 = 40
. Это 5 меньше, чем 45, показанных newrelic. Нужна помощь в устранении этих нарушений.
Сравнить скриншоты:
против
Спасибо, большое объяснение (и шляпа!). Полагаю, это подводит меня к исследованию того, как надежно настраивать количество рабочих, в которых я нуждаюсь. Любое направление, на которое вы можете указать мне? –
Ну ... Сначала подумайте, какие ресурсы ваши задачи конкурируют за vs от того, сколько из этого ресурса доступно (учитывая другие процессы, запущенные на одном сервере), как долго выполняются ваши задачи, как часто их вызывают и т. Д. - глобально, что ваши шаблоны использования. Если у вас есть задачи с очень разными потребностями/шаблонами использования, вы можете отправить их в разные очереди/разные серверы (возможно, с разными распределениями ресурсов в зависимости от очередей, которые будет обрабатывать сервер). –