Django Celery Queue застревает

Я использую Celery/RabbitMQ для выполнения асинхронных задач с моим приложением django. Я только начал работать с сельдереем.

Задачи выполняются, и все работает отлично, как только я запускаю рабочий.

Проблема в том, что выполнение задач останавливается через некоторое время. Через пару часов, день или иногда пару дней. Я осознаю это только из-за последствий незавершенных задач. Затем я перезапускаю сельдерей, и все отложенные задачи выполняются, и все возвращается к нормальной жизни.

Мои вопросы:

  • Как я могу отладить (с чего начать поиск), чтобы выяснить, в чем проблема?
  • Как я могу создать механизм, который будет уведомлять меня сразу после начала проблемы?

Мой стек: Django 1.4.8 Celery 3.1.16 RabbitMQ Supervisord

Спасибо энди

1 ответ

(1) Если ваш сельдерей иногда застревает, вы можете использовать strace & lsof чтобы узнать, по какому системному вызову он застрял.

Например:

$ strace -p 10268 -s 10000
Process 10268 attached - interrupt to quit
recvfrom(5,

10268 - пиджак из сельдерея, recvfrom(5 означает, что рабочий останавливается на получении данных из файлового дескриптора.

Тогда вы можете использовать lsof чтобы проверить что 5 в этом рабочем процессе.

lsof -p 10268
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF      NODE NAME
......
celery  10268 root    5u  IPv4 828871825      0t0       TCP 172.16.201.40:36162->10.13.244.205:wap-wsp (ESTABLISHED)
......

Это указывает на то, что работник застрял в TCP-соединении (вы можете увидеть 5u в FD колонка).

Некоторые пакеты Python, такие как requests блокирует ожидание данных от однорангового узла, это может вызвать зависание работника сельдерея, если вы используете requestsпожалуйста, не забудьте установить timeout аргумент.

(2) вы можете отслеживать размер очереди задач сельдерея в RabbitMQ, если она будет увеличиваться в течение длительного времени, возможно, работник сельдерея бастует.


Вы видели эту страницу:

https://www.caktusgroup.com/blog/2013/10/30/using-strace-debug-stuck-celery-tasks/

Другие вопросы по тегам