0

AMQP を使用したバックグラウンド ジョブ処理システムがあります。複数のサーバーが同じキューからジョブを消費しています。これらの各サーバーは、4 つのワーカー プロセスを実行しています。ここまでは順調ですね。

処理されるジョブ自体にはIPCが必要です。一貫性を保つために、AMQPキュー(もちろん別のもの)を再度使用します。アイデアは、次のように、各ワーカーに対応する IPC があるというものでした。

                      /    IPC queue   \
Main queue ---> * W1 /                  \ W1-counterpart
              > * W2 /                  \ W2-counterpart
              > * W3 /                  \ W3-counterpart
              > * W4 /                  \ W4-counterpart
                     \ IPC Result queue /

カウンターパートは独立して動作できるので、W3 カウンターパートが W1 のジョブを処理していれば問題ありません。問題は、システムが常に十分に活用されていないように見えることです。メイン キューがジョブでいっぱいの場合でも、同時に 2 つしか処理されていないように見えますが、別の瞬間に 4 つすべてが使用されます。なんで?これが常に機能しないのはなぜですか?

4

1 に答える 1

0

着信キューが空か空でないかを尋ねたときに、結果のデバッグ プリントなどを追加することをお勧めします。

于 2012-05-09T13:50:09.643 に答える