私は、8 つのコアまたは CPU を備えた単一の VM でホストされている Python/Django Web プロジェクトで、タスクのためにセロリの実行を開始しました。今すぐ設定を改善する必要があります - 私は初歩的なミスを犯しました。
私はsupervisor
セロリの労働者とビートを処理するために使用します。には/etc/supervisor/conf.d/
、worker 関連の conf ファイルcelery1.conf
とcelery1.conf
. するべきか...
1)それらの 1 つを削除しますか? どちらも異なるワーカーを生成します。つまり、以前の conf ファイルにはcommand=python manage.py celery worker -l info -n celeryworker1
. 後者はcommand=python manage.py celery worker -l info -n celeryworker2
. ここでは、マシンごとに 1 つのワーカーを実行することが正式に述べられています。
2) conf をnumprocs
いじくり回しますか? 現在 にありcelery1.conf
、 を定義しましnumprocs=2
た。では、 *celery2.conf
を定義しました(後でフッターを参照)。numprocs=3
同時に/etc/default/celeryd
、私は を持っていCELERYD_OPTS="--time-limit=300 --concurrency=8"
ます。どうしたの?スーパーバイザーは celerydnumprocs
よりも優先されますか、それとも何ですか? concurrency
設定する必要がありnumprocs=0
ますか?
*両方のファイルの合計 numprocs = 2+3 = 5. これでチェックアウトされます。sudo supervisorctl
5 つのセロリ ワーカー プロセスを示します。しかし、newrelic では、celeryd に対して45 のプロセスが実行されています。一体何?! スーパーバイザーによって作成された各 proc が実際に (celeryd を介して) 8 つの proc を生成している場合でも、合計numprocs x concurrency = 5 x 8 = 40
. これは、newrelic が示した 45 よりも 5 少ない数です。これらの過ちを正すためのガイダンスが必要です。
スクリーンショットを比較します。
対