Eri*_*ner 10 django rabbitmq celery
我试图让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每次运行任务时都会创建一个新队列:

它将auto-delete参数设置为true,但我不完全确定这些队列何时会被删除.他们似乎只是慢慢积累和吃资源.
有没有人有想法?
谢谢.
好的,我明白了.
以下是相关的文档:http: //readthedocs.org/docs/celery/latest/userguide/tasks.html#amqp-result-backend
旧结果不会自动清除,因此您必须确保使用结果,否则队列的数量最终会失控.如果您正在运行RabbitMQ 2.1.1或更高版本,则可以利用队列的x-expires参数,这将在未使用后的某个时间限制之后使队列到期.可以通过CELERY_AMQP_TASK_RESULT_EXPIRES设置(默认情况下未启用)设置队列到期(以秒为单位).
| 归档时间: |
|
| 查看次数: |
13730 次 |
| 最近记录: |