2012-08-01 18 views
6

Ci sono in esecuzione sedano dietro Supervisore e iniziare conIl numero di processi celeryd dipende dall'impostazione di --concurrency?

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

Questo, tuttavia, crea un grafico processo che è fino a tre strati profondi e contiene fino a 7 processi celeryd (supervisore genera una celeryd, che genera vari altri, che generano nuovamente processi). La nostra macchina ha due core CPU.

Tutti questi processi funzionano su attività? Forse alcuni di loro sono solo pool di lavoratori? In che modo l'impostazione di --concurrency è connessa al numero di processi effettivamente generati?

risposta

4

Non dovreste avere 7 processi se --concurrency è 2.

I processi reali iniziate è:

  • Il processo principale consumatore

    delegati lavorano per il pool di lavoro

  • Il pool di worker (questo è il numero che decide --concurrency)

Quindi questo è 3 processi con una concorrenza di due.

Oltre un processo molto leggero utilizzato per ripulire i semafori si avvia se force_execv è attivata (che lo è di default i stai usando un po 'di altri mezzi di trasporto di Redis o RabbitMQ).

NOTA che in alcuni casi gli elenchi di processi includono anche i thread. l'operatore può avviare più thread se si utilizzano trasporti diversi da rabbitmq/redis, incluso un thread Mediatore che viene sempre avviato a meno che non sia abilitato CELERY_DISABLE_RATE_LIMITS.

+0

Questo non corrisponde alla mia esperienza. Ho '--concurrency = 1 --beat', ma sono generati 4 processi di sedici. – Cerin

+0

Uso 'DatabaseTransport' e Celery 3.0, e con' --concurrencry = 1' ottengo 6 processi, come nel caso OP. –

+0

@asksol Ricevo anche 4 proc celeryd quando --concurrency = 1 e con due worker. Sono curioso di sapere perché, molte grazie. – fpghost

Problemi correlati