2012-11-03 45 views
19

私はSidekiqの内部について熟知しておらず、複数のSidekiqインスタンスを同じ構成(同じキューを処理する)で起動することが良いのだろうかと思っています。複数のsidekiqインスタンスが同じキューを処理する可能性があります

2つ以上のSidekiqインスタンスが同じメッセージをキューから処理する可能性はありますか?

UPDATE:
私は1台の以上のマシンで同じキューに対して

+0

なぜそれをしたいですか? sidequeq over resqueの利点はマルチスレッドであると考えられているので、1つのプロセスだけが必要です。 – Thilo

+1

2台以上のマシンでSidekiqを実行しているときに、競合が発生する可能性があるかどうかを知る必要があります。スレッディングとプロセスの問題ではありません。 – Jacob

+3

@Thilo、単一のマシンであっても、CPUの使用を単一のコアの100%に制限する "1つのプロセスだけが必要"であり、キューの処理速度が制限されます。私は8コアのマシンを持っており、siekiqがフル・キャパシティで4つのコアを使用するようにしたいので、4つのプロセスが必要です。 –

答えて

39

はい、sidekiqは絶対に実行することができ、多くのプロセスをSidekiqを実行するときに、重複の可能性があるかどうかを知る必要があり 。 Redisはメッセージをランダムなプロセスに渡します。

+0

偶発的な二重フォームの送信など、異なるインスタンスが非常に似たような時間に同じクエリを実行する(またはそれは意味をなさない)場合に問題が発生する可能性がありますか? –

+1

サイドキックは同時に発生するように設計されていますが、バグが発生する可能性があります。アプリケーションコードは、ダブルクリックするとバグが発生する可能性が非常に高くなります。 –

7

いいえ、私は問題のない別のマシンでSidekiqを実行しました。

サイドキーキーのそれぞれは、同じレディスサーバーから読み取ったもので、マルチスレッド化され分散したシナリオでは、レディスは非常に堅牢です。

また、SidekiqのWebインターフェイスを見ると、すべてのワーカーが同じRedisサーバーにログインしているため、すべてのワーカーにすべてのワーカーが表示されます。

いいえ、問題はありません。

+3

これは面白いです。私はいくつかのSidekiqサーバーを別々のマシンから実行していますが、Redisキューからジョブを正しく消費しても、私のRailsアプリケーションがUIに表示されるプロセスとは異なるマシンには表示されません。特別な設定をする必要がありましたか? – Nobita

関連する問題