2016-10-06 5 views
3

Webファームで、各ASP.NETアプリケーションが同じように設定され、Hangfireストレージ用に同じ共有SQL Serverデータベースを使用するN個のインスタンスがある場合、Hangfireの動作を正確に理解しようとしています。Webファームのハングファイアはどのように機能しますか?

ドキュメントには、競合状態を防ぐために分散ロックが使用されていると書かれていますが、これは少し低レベルなので、実際には何を意味するのかを理解する必要があります。

例:

私は5つのWebサーバのインスタンスを持っている、と私は午後5時に1日1回実行されますスケジュールにバックグラウンドジョブを作成した場合、これは最初のインスタンスは、上の「ロック」を取得することを意味していジョブは実行を終了し、他のすべてのインスタンスはロックされている間ジョブを無視しますか?

私は、Hangfireは一度に1つのインスタンスでジョブを処理することを許可していると仮定していますが、確認していません。

実際に各サーバーインスタンスで同時にジョブを実行する場合はどうなりますか?

ウェブファームで誰かがハングファイアの実践経験があれば、私はすべて耳にします。

答えて

1

これらは、私はより多くの研究とテストの後に設立されました基本的なルールです:Hangfireは上のワーカースレッドの数に基づいて、利用可能な容量を持つ最初のHangfireサーバー上でバックグラウンドジョブを実行します

  • そのサーバ

  • Hangfireは、ワーカープールが飽和するまで、そのサーバ上のバックグラウンドジョブを実行し続けることがファーム内の次に使用可能なサーバーに移動しますその時点で、そのため

  • であろう

    ハングファイアサーバは、同じハングファイアストレージインスタンスを使用する場合、自動的にWebファームに組み込まれるため、一般的には追加設定は必要ありません。

  • 特定のサーバーで特定のバックグラウンドジョブを実行する場合や、異なるワークロード分散アルゴリズムを使用する場合は、キューに名前が与えられ、特定のサーバーインスタンスに割り当てられる可能性のある名前付きキューを使用できます。そのキューでも実行されるようにスケジュールされています。

関連する問題