celeryに従業員数を制限する方法はありますか?私は小さなサーバーを持っており、セロリは常に1つのコアプロセッサで10のプロセスを作成します。私はこの数を3つのプロセスに制限したいと思います。セロリ。プロセス数を減らす
答えて
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番目のタスクは、最初のタスクが完了するまで待機します。
}
セロリの従業員--concurrencyオプションでは、キューを処理する子プロセスの数を指定できます。
'CELERYD_CONCURENCY = 1'は動作しません - まだ10プロセスを生成します。 ** - 並行性= 1 **は同じ効果があります。 –
オートスケールを使用していますか? – mher
デフォルトで使用されている場合 - はい。 –
私は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人のプロセスが得られます。
私にはこのオプションは無視されます。 CELERYD_NODES = 1の場合、10プロセスになります。 CELERYD_NODES = 2の結果、10プロセスになります。 –
私は3つのプロセスに同意しますが、私にとっては常に10を生成します。 –
私は3つのプロセスしか試していませんでした。私は限界を知らない。主なことは、同時実行性が1の場合、後続のタスクがなぜ実行されるのかということです。彼らは保留にする必要があります。 – fatrock92
うわー! '/ etc/default/celeryd'を編集すると助けになりました!どうもありがとうございました! =) –