Resque ワーカーを使用して毎朝メールを生成して送信する Rails(3.2.8)/Mongoid(3.0.6) アプリがあります。各 Resque ジョブは、いくつかのコレクションにクエリを実行してメールを生成し、実際の送信を実行する必要があります。
クエリをサポートするために複合インデックスが設定されており、単一のジョブを手動で実行するのは非常に高速です。ただし、同時作業者の数を増やすと、電子メールの生成にかかる時間が急速に爆発します。ログを追跡すると、mongo クエリの実際の実行が劇的に増加することがわかります。
(注: Sidekiq を評価しているときにこれに気付きましたが、Resque でも同じことが起こります。3 ~ 4 個のプロセッサ/ワーカーは問題なく移動しますが、それを超えるとスループットが劇的に低下します)
1 つのボックスに 4 つの Thin プロセス、別のボックスに Resque、3 つ目のボックスに MongoDB サーバーがあります (すべて Rackspace の同じデータセンター内でホストされています)。ワーカーが 4 人から 8 人になった場合でも、違いは顕著です。Thins も影響を受けます。
私が見ているパフォーマンスの問題を説明する可能性のある、私が見逃している可能性のある簡単にぶら下がっている果物や明らかなビットはありますか? ポインタやアドバイスをいただければ幸いです。