2012-08-01 9 views
6

Estamos funcionando con apio detrás de Supervisor y empezamos con¿El número de procesos apilados depende de la configuración de concurrencia?

celeryd --events --loglevel=INFO --concurrency=2 

Esto, sin embargo, crea un gráfico de proceso que es hasta tres capas de profundidad y contiene hasta 7 procesos celeryd (Supervisor genera una celeryd, lo que genera varios otros, que nuevamente generan procesos). Nuestra máquina tiene dos núcleos de CPU.

¿Funcionan todos estos procesos en las tareas? ¿Tal vez algunos de ellos solo son grupos de trabajadores? ¿Cómo está conectada la configuración de concurrencia a la cantidad de procesos generados?

Respuesta

4

No deberías tiene 7 procesos si es --concurrency 2.

Los procesos reales iniciadas es:

  • El proceso principal consumidor

    delegados trabajan a la piscina trabajador

  • El grupo de trabajadores (este es el número que --concurrency decide)

Así que eso es 3 procesos con una concurrencia de dos.

Además un proceso muy ligero usado para limpiar los semáforos se inicia si force_execv está habilitado (que está por defecto i que está utilizando algún otro medio de transporte que Redis o RabbitMQ).

Nótese que en algunos casos las listas de procesos también incluyen subprocesos. el trabajador puede iniciar varios subprocesos si usa transportes distintos de rabbitmq/redis, incluyendo un hilo de Mediator que siempre se inicia a menos que CELERY_DISABLE_RATE_LIMITS esté habilitado.

+0

Esto no coincide con mi experiencia. Tengo '--concurrency = 1 --beat', sin embargo, 4 procesos apilados se generan. – Cerin

+0

Utilizo 'DatabaseTransport' y Celery 3.0, y con' --concurrencry = 1' Obtengo 6 procesos, similar al caso OP. –

+0

@asksol Experimento también 4 procesos de aplet cuando --concurrency = 1 y con dos trabajadores. Tengo curiosidad por saber por qué, muchas gracias. – fpghost

Cuestiones relacionadas