Estoy tratando de obtener RabbitMQ con Celery y Django yendo en una instancia de EC2 para hacer un procesamiento de fondo bastante básico. Estoy ejecutando rabbitmq-server 2.5.0 en una gran instancia de EC2.RabbitMQ en EC2 Consumo de toneladas de CPU
He descargado e instalado el cliente de prueba según las instrucciones here (en la parte inferior de la página). He estado simplemente dejar que el script de prueba ir y estoy consiguiendo el resultado esperado:
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
El problema es que se está consumiendo una cantidad increíble de la CPU:
PID de usuario PR NI VIRT RES SHR S % CPU% MEM TIEMPO + COMANDO
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
Estaba probando en una microinstancia anteriormente y consumía por completo todos los recursos en la instancia.
¿Es esto esperado? ¿Estoy haciendo algo mal?
Gracias.
Editar:
La verdadera razón de este post fue que celerybeat parecía funcionar bien para un rato y luego consumir repente todos los recursos en el sistema. Instalé el rabbitmq management tools y he estado investigando cómo se crean las colas a partir del apio y del conjunto de pruebas rabbitmq. Me parece que el apio está huérfano a estas colas y no se van a ir.
Aquí está la cola generada por el conjunto de pruebas. se crea una cola y todos los mensajes de entrar en ella y salir:
Celerybeat crea una nueva cola para cada vez que se ejecuta la tarea:
Se establece el parámetro de eliminación automática de verdad, pero no estoy del todo seguro de cuándo se eliminarán estas colas. Parecen crecer lentamente y comer recursos.
¿Alguien tiene una idea?
Gracias.
La próxima versión de Celery (2.3.0) no tendrá un resultado de backend por defecto. Haciéndolo una opción más consciente, para evitar riesgos como estos. – asksol
Actualice el enlace, la página no existe – lfender6445