Сельдерей висит на населении postgres db - PullRequest
0 голосов
/ 16 ноября 2018

Мы используем celery для управления очередью задач в нескольких док-контейнерах. Мы используем Redis в качестве нашего брокера и бэкэнда результатов. Когда мы запускаем асинхронную задачу, которая заполняет нашу базу данных Postgres, сельдерей зависает, но только иногда. Мы не смогли наблюдать, какой шаблон следует за этим, но задача останавливает выполнение и зависает на этапе, на котором мы создаем несколько таблиц базы данных в базе данных Postgres, принадлежащей приложению.

Мы используем следующие версии соответствующих программ:

Postgres: 9,6,6

Psycopg: 2.7.5

Сельдерей: 4.2.1

Ubuntu: 14.04.3

Redis: 3,2

Когда мы очистили зависшее активное задание, зарезервированные задания не были перемещены в активное. Мы также не смогли отозвать эти задачи и вынуждены были перезапустить докер-контейнер.

Вот что мы попробовали в первую очередь:

Мы попытались перезапустить работника, но это не переместило задачи из зарезервированного.

Мы попытались отозвать зарезервированные задачи, и хотя сельдерей подтвердил, что они были отозваны, они все равно появились в списке зарезервированных задач для этого работника.

Когда мы пытались запустить новое задание, это также не влияло на состояние. Мы нашли один средний пост .

Пытаясь выполнить их диагностические шаги, мы не смогли использовать strace для нашей цели, он выдал следующую ошибку:

strace: attach: ptrace(PTRACE_SEIZE, 45): Operation not permitted

И перепробовал множество методов для постановки диагноза. Мы понимаем, что в предыдущей версии Postgres были проблемы с блокировкой базы данных, но, похоже, мы используем версию, в которой это было решено.

Любая помощь или идеи будут оценены. Мы являемся прикладными инженерами с редкой доступной помощью. Спасибо!

...