6

スーパーバイザーの背後でセロリを実行しており、次のように開始します

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

ただし、これにより、最大 3 層の深さで、最大 7 つの celeryd プロセスを含むプロセス グラフが作成されます (Supervisor が 1 つの celeryd を生成し、それが他のいくつかの celeryd を生成し、それが再びプロセスを生成します)。私たちのマシンには 2 つの CPU コアがあります。

これらのプロセスはすべてタスクで機能していますか? それらのいくつかは単なるワーカープールですか?--concurrency 設定は、実際に生成されたプロセスの数にどのように関連していますか?

4

1 に答える 1

4

が 2 の場合、7 つのプロセスを持つべきではありません--concurrency

実際に開始されたプロセスは次のとおりです。

  • 主な消費者プロセス

    作業をワーカー プールに委任します

  • ワーカープール (これが--concurrency決定する数です)

つまり、2 つの同時実行性を持つ 3 つのプロセスです。

さらに、force_execv が有効になっている場合は、セマフォのクリーンアップに使用される非常に軽量なプロセスが開始されます (デフォルトでは、redis または rabbitmq 以外のトランスポートを使用しています)。

場合によっては、プロセス リストにもスレッドが含まれることに注意してください。ワーカーは、rabbitmq/redis 以外のトランスポートを使用する場合、複数のスレッドを開始できます。これCELERY_DISABLE_RATE_LIMITSには、有効でない限り常に開始される 1 つのメディエーター スレッドが含まれます。

于 2012-08-01T09:50:38.360 に答える