Я пытаюсь получить RabbitMQ с Celery и Django, использующим экземпляр EC2, чтобы выполнить довольно простую фоновую обработку. Я запускаю rabbitmq-server 2.5.0 на большом экземпляре EC2.
Я загрузил и установил тестовый клиент в соответствии с инструкциями здесь (в самом низу страницы). Я просто позволяю тесту выполнить сценарий и получаю ожидаемый результат:
recving rate: 2350 msg/s, min/avg/max latency: 588078478/588352905/588588968 microseconds
recving rate: 1844 msg/s, min/avg/max latency: 588589350/588845737/589195341 microseconds
recving rate: 1562 msg/s, min/avg/max latency: 589182735/589571192/589959071 microseconds
recving rate: 2080 msg/s, min/avg/max latency: 589959557/590284302/590679611 microseconds
Проблема в том, что он потребляет невероятное количество ЦП:
PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND
668 rabbitmq 20 0 618m 506m 2340 S 166 6,8 2: 31,53 beam.smp
1301 ubuntu 20 0 2142m 90m 9128 S 17 1.2 0: 24.75 java
Ранее я тестировал микроэкземпляр, и он полностью потреблял все ресурсы экземпляра.
Этого следовало ожидать? Я что-то делаю не так?
Спасибо.
Edit:
Настоящей причиной этого сообщения было то, что celerybeat какое-то время работал нормально, а затем внезапно потреблял все ресурсы в системе. Я установил инструменты управления rabbitmq и исследовал, как создаются очереди из сельдерея и из набора тестов rabbitmq. Мне кажется, что сельдерей осиротел эти очереди, и они никуда не денутся.
Вот очередь, сгенерированная набором тестов. Создается одна очередь, и все сообщения попадают в нее и выходят:
Celerybeat создает новую очередь при каждом запуске задачи:
Он устанавливает для параметра автоудаления значение true, но я не совсем уверен, когда эти очереди будут удалены. Кажется, они просто медленно накапливаются и съедают ресурсы.
У кого-нибудь есть идея?
Спасибо.