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
Шаги для воссоздания проблемы:
- install RabbitMQ: sudo apt-get install rabbitmq-server
- start RabbitMQ: sudo rabbitmq-server
Нет пользовательских настроек для RabbitMQ.
Я протестировал 4 случая:
- Start RabbitMQ only
- Start RabbitMQ with Celery, project has no tasks
- Project has 1 task, no calls
- 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