2012-08-31 19 views
15

celeryに従業員数を制限する方法はありますか?私は小さなサーバーを持っており、セロリは常に1つのコアプロセッサで10のプロセスを作成します。私はこの数を3つのプロセスに制限したいと思います。セロリ。プロセス数を減らす

答えて

27

settings.pyファイルで並行性を1に、max_tasks_per_childを1に設定しようとしましたが、同時に3つのタスクを実行しました。それはちょうどUserとして1つのプロセスを生み出し、もう1つはセロリとして生み出します。それはちょうど1つのプロセスを実行して、もう一方のプロセスを実行する前に完了するのを待つべきです。

私はdjangoセロリを使用しています。

EDIT {

私はsettings.pyファイルにCELERYD_CONCURRENCY = 1を書き込むことによって、並行処理を割り当てました。しかし、 "tail -f /var/log/celery/w1.log"を使ってセロリログファイルを見ると、並行性に8の値が割り当てられていました。これは、set.pyは並行性を変更しないと言いました。 この問題を解決するために、 "/ etc/default/celeryd"ファイルに次の行を追加しました。

# Extra arguments to celeryd 
CELERYD_OPTS="--concurrency=1" 

ここで、キューの2番目のタスクは、最初のタスクが完了するまで待機します。

}

+0

私は3つのプロセスに同意しますが、私にとっては常に10を生成します。 –

+0

私は3つのプロセスしか試していませんでした。私は限界を知らない。主なことは、同時実行性が1の場合、後続のタスクがなぜ実行されるのかということです。彼らは保留にする必要があります。 – fatrock92

+0

うわー! '/ etc/default/celeryd'を編集すると助けになりました!どうもありがとうございました! =) –

8

セロリの従業員--concurrencyオプションでは、キューを処理する子プロセスの数を指定できます。

+1

'CELERYD_CONCURENCY = 1'は動作しません - まだ10プロセスを生成します。 ** - 並行性= 1 **は同じ効果があります。 –

+0

オートスケールを使用していますか? – mher

+0

デフォルトで使用されている場合 - はい。 –

1

私は4つのプロセスではなく、二つがあります

$ ps -ef | grep "celery" | grep -v "grep" 
www-data 1783  1 0 17:50 ?  00:00:46 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid 
www-data 1791 1783 0 17:50 ?  00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid 
www-data 1802  1 0 17:50 ?  00:00:52 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid 
www-data 1858 1802 0 17:50 ?  00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid 

になり、私のceleryd-configファイル

CELERYD_NODES=2 

でこれを持っているが、2人の労働者があります。各ワーカースレッドには2つのプロセスがあるようです。おそらくCELERYD_NODESを3に設定すると、3人の作業者が得られますが、6人のプロセスが得られます。

+2

私にはこのオプションは無視されます。 CELERYD_NODES = 1の場合、10プロセスになります。 CELERYD_NODES = 2の結果、10プロセスになります。 –