RabbitMQ + Celery. RabbitMQ создает новый процесс каждые 60 секунд

Моя цель - создать задачу, которая отправляет уведомление по электронной почте, когда комментарий пользователя получает ответ. Я использую WSL Ubuntu, Django, Celery + RabbitMQ

Проблема в том, что каждые 60 секунд RabbitMQ создает новый '/usr/lib/erlang/erts-10.6.4/bin/epmd -daemon' процесс (далее PROCESS), не закрывая предыдущий.

Как показано в логах, я запустил сервер RabbitMQ в 12:05, первый PROCESS начался в 12:05, после этого RabbitMQ создает новый PROCESS каждую минуту.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       338  0.0  0.0  16016  4420 tty1     S    12:05   0:00 sudo rabbitmq-server
root       339  0.0  0.0  10656  1928 tty1     S    12:05   0:00 /bin/sh /usr/sbin/rabbitmq-server
root       346  0.0  0.0  15116  2796 tty1     S    12:05   0:00 su rabbitmq -s /bin/sh -c /usr/lib/rabbitmq/bin/rabbitmq-server
rabbitmq   347  0.0  0.0  10656  1860 ?        Ss   12:05   0:00 sh -c /usr/lib/rabbitmq/bin/rabbitmq-server
rabbitmq   348  0.0  0.0  10656  1904 ?        S    12:05   0:00 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server
rabbitmq   455  0.0  0.0  14400  2248 ?        S    12:05   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq   530  0.8  0.4 5345524 74892 ?       Sl   12:05   0:11 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 128 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -B i -- -ro
rabbitmq   575  0.0  0.0  14400  2212 ?        S    12:05   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq   706  0.0  0.0  10540  1664 ?        Ss   12:05   0:00 erl_child_setup 1024
rabbitmq   743  0.0  0.0  11928  1624 ?        Ss   12:05   0:00 inet_gethost 4
rabbitmq   744  0.0  0.0  12008  1840 ?        S    12:05   0:00 inet_gethost 4
root       745  0.0  0.0   9808  1100 tty3     Ss   12:05   0:00 /init
profile     746  0.0  0.0  15132  4084 tty3     S    12:05   0:00 -bash
rabbitmq   787  0.0  0.0  14400  2196 ?        S    12:06   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq   855  0.0  0.0  14400  2172 ?        S    12:07   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq   911  0.0  0.0  14400  2212 ?        S    12:08   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq   965  0.0  0.0  14400  2356 ?        S    12:09   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1024  0.0  0.0  14400  2264 ?        S    12:10   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1080  0.0  0.0  14400  2296 ?        S    12:11   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1134  0.0  0.0  14400  2264 ?        S    12:12   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1189  0.0  0.0  14400  2380 ?        S    12:13   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1245  0.0  0.0  14400  3504 ?        S    12:14   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1299  0.0  0.0  14400   252 ?        S    12:15   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon
rabbitmq  1353  0.0  0.0  14400   252 ?        S    12:16   0:00 /usr/lib/erlang/erts-10.6.4/bin/epmd -daemon

Шаги для воссоздания проблемы:

  1. install RabbitMQ: sudo apt-get install rabbitmq-server
  2. start RabbitMQ: sudo rabbitmq-server

Нет пользовательских настроек для RabbitMQ.

Я протестировал 4 случая:

  1. Start RabbitMQ only
  2. Start RabbitMQ with Celery, project has no tasks
  3. Project has 1 task, no calls
  4. Projest has 1 task, call task manually every 30 seconds

Project settings.py:

CELERY_BROKER_URL = 'amqp://localhost'
CELERY_IGNORE_RESULT = True

Во всех случаях новый ПРОЦЕСС появляется каждую минуту. Я использую 'sudo rabbitmqctl stop' для остановки сервера RabbitMQ, но эти процессы все еще открыты после выключения сервера.

Согласно документации RabbitMQ, RabbitMQ проверяет мертвые TCP-соединения каждые 60 секунд https://www.rabbitmq.com/heartbeats.html

Проверил файл /var/log/rabbitmq/rabbit@hostname.log, последние строки следующие:

2022-02-02 12:05:23.460 [info] <0.451.0> started TCP listener on 127.0.0.1:5672
2022-02-02 12:05:23.460 [info] <0.303.0> Running boot step cluster_name defined by app rabbit
2022-02-02 12:05:23.460 [info] <0.303.0> Running boot step direct_client defined by app rabbit
2022-02-02 12:05:23.460 [notice] <0.104.0> Changed loghwm of /var/log/rabbitmq/rabbit@Ksenia-Madi.log to 50
2022-02-02 12:05:23.680 [info] <0.8.0> Server startup complete; 0 plugins started.

Нет данных после 12:05

Это нормальное поведение, разве кролик не должен закрывать старые соединения или я неправильно понимаю ситуацию?

  • WSL Ubuntu 20.04.3 LTS
  • celery 5.2.3
  • RabbitMQ 3.8.2
  • Erlang 22.2.7
Вернуться на верх