我试图让RabbitMQ与Celery和Django一起在EC2实例上进行一些非常基本的后台处理.我在大型EC2实例上运行rabbitmq-server 2.5.0.
我按照这里的说明(在页面的最底部)下载并安装了测试客户端.我只是让测试脚本运行并获得预期的输出:
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
Run Code Online (Sandbox Code Playgroud)
问题是它消耗了大量的CPU:
PID用户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
我之前在微实例上进行测试,它完全消耗了实例上的所有资源.
这是预期的吗?难道我做错了什么?
谢谢.
编辑:
这篇文章的真正原因是celerybeat似乎运行了一段时间然后突然消耗了系统上的所有资源.我安装了rabbitmq管理工具,并一直在调查如何从芹菜和rabbitmq测试套件创建队列.在我看来,芹菜正在孤立这些队列而且它们不会消失.
这是测试套件生成的队列.创建一个队列,所有消息都进入并出现:

Celerybeat每次运行任务时都会创建一个新队列: …