2012-01-15 3 views
0

django-celery (백엔드로 rabbitmq 사용)를 통해 일부 작업을 실행하는 임무는 시간이 많이 걸리고 CPU 사용량이 많습니다.장고 - 셀러리 상태가 수신 되었습니까?

2 명의 근로자 Ec2 인스턴스가 있습니다 (하나는 작고 다른 하나는 높은 CPU 매체).

Ive는 1 개의 동시 작업을 실행하기 위해 작은 인스턴스를 설정하고 4 개의 작업을 수행 할 매체를 설정합니다. 이는 저에게 적합합니다. 그러나 때때로 셀러리 모니터에서 작은 인스턴스가 작업을 수행하고 2 ~ 3 개의 작업이 "RECEIVED"상태 (작은 인스턴스에 할당 됨)에있는 반면 중간 인스턴스는 아무 것도하지 않는 것으로 나타났습니다. 이상적으로는 중간 인스턴스와 같은 ID는 작은 것보다 우선권을 가지지 만,이 경우 작은 것이 동시성에있을 경우 태스크는 매체로 이동해야합니다. 그것은 작은 인스턴스가 씹을 수있는 것보다 더 많이 물고있는 것처럼 보입니다. 순간적으로 시작할 수없는 작업을 할당하는 것처럼.

근로자가 그 순간에 시작할 수있는 작업 만 수락 할 수있는 방법이 있습니까?

스크린 샷 : http://dl.dropbox.com/u/361747/task-state.png. domU로 시작하는 작업자는 작습니다. ip로 시작하는 작업자는 중간입니다.

답변

1

CELERYD_PREFETCH_MULTIPLIER 옵션을 사용하여 프리 페치 할 작업 수를 제어 할 수 있습니다. 귀하의 사례에서 CELERYD_PREFETCH_MULTIPLIER = 1은 업무를 고르게 분배하는 데 도움이됩니다.

http://ask.github.com/celery/configuration.html#celeryd-prefetch-multiplier

+0

감사합니다. 설정에 대해 알지 못했습니다. 오늘 나중에 시험해 보겠습니다. – sajal

관련 문제