2012-08-01 3 views
6

우리는 슈퍼 바이저 뒤에 셀러리를 실행하고celeryd 프로세스의 수가 -concurrency 설정에 의존합니까?

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

이와 함께 시작된다, 그러나, 최대 세 개의 층 깊이 7 개 celeryd 프로세스 (관리자가 여러 급부상 한 celeryd를 생성합니다까지 포함하는 프로세스 그래프를 생성 다른 프로세스는 프로세스를 다시 생성합니다). 우리 머신에는 2 개의 CPU 코어가 있습니다.

이러한 모든 프로세스가 작업에 사용됩니까? 어쩌면 그 중 일부는 일하는 사람 풀일까요? - 동시성 설정은 실제로 생성 된 프로세스의 수와 어떻게 연결되어 있습니까? --concurrency 시작 2.

실제 프로세스 인 경우

답변

4

당신은 7 개 프로세스가 없어야 것은 :

  • 대표는 작업자 풀에 작업의 주요 소비자 과정

  • 작업자 풀 (--concurrency이 결정하는 번호)

따라서 프로세스는 동시성이 2입니다. force_execv가 (당신이 레디 스 또는 rabbitmq 이외에 다른 전송 을 사용하고 나는 그것이 기본적으로 인)을 사용하는 경우

는 또한 세마포어를 정리하는 데 사용되는 매우 경량 프로세스는 을 시작한다.

일부 경우 프로세스 목록에는 스레드가 포함됩니다. rabbitmq/redis 이외의 전송을 사용하는 경우 작업자는 CELERY_DISABLE_RATE_LIMITS이 활성화되어 있지 않으면 항상 시작되는 하나의 조정자 스레드를 포함하여 여러 스레드를 시작할 수 있습니다.

+0

내 경험과 일치하지 않습니다. 나는'--concurrency = 1 --beat'을 가지고 있지만 4 개의 celeryd 프로세스가 생성됩니다. – Cerin

+0

'DatabaseTransport'와 Celery 3.0을 사용하고'--concurrencry = 1'을 사용하면 OP case와 비슷한 6 개의 프로세스를 얻습니다. –

+0

@asksol -concurrency = 1 일 때와 두 명의 작업자가있는 경우 4 개의 celeryd procs도 경험합니다. 왜 그런지 궁금합니다. 많은 감사합니다. – fpghost