私は asp.net mvc-5 Web アプリケーションに取り組んでおり、Hangfire ツールを使用して実行時間の長いバックグラウンド ジョブを実行する際に問題に直面しています。問題は、ジョブの実行が 30 分を超えると、hangfire が自動的に別のジョブを開始するため、2 つの同様のジョブが同時に実行されることになります。
今、私は次のものを持っています:-
- Asp.net mvc-5
- IIS-8
- ハングファイア 1.4.6
- Windows サーバー 2012
これで、ハングファイアの繰り返しジョブを毎日 17:00 に実行するように定義しました。バックグラウンド ジョブは主にネットワークをスキャンしてサーバーと VM を探し、DB を更新します。定期的なジョブは実行完了後にメールを送信します。定期的なジョブは、実行が 30 分未満の場合にうまく機能していました。しかし、現在、システムが拡大するにつれて、定期的なジョブは以前の 22 ~ 25 分ではなく、40 分後に完了しました。そして、1通ではなく2通のメールを受け取りました(メール間の時間は約30分でした). ここで、ジョブを手動で再実行しましたが、問題は次のとおりであることに気付きました:-
「繰り返しジョブの連続実行が 30 分に達すると、繰り返しジョブの新しいインスタンスが開始されるため、同時に 1 つではなく 2 つのインスタンスが実行されるため、なぜ 2 つのメールを受信したのでしょうか。」
定期的なジョブの所要時間が 30 分未満 (たとえば 29 分) の場合、問題は発生しませんが、定期的なジョブの実行が 30 分を超えると、何らかの理由でハングファイアが発生し、新しいジョブが開始されます。ジョブの実行中に hangfire ダッシュボードにアクセスすると、アクティブなジョブが 1 つしかないことがわかりますが、DB を監視すると、DB にアクセスしている 2 つのジョブがあることが SQL プロファイラーからわかります。これは、繰り返しジョブの開始から 30 分後 (私たちの場合は 17:30) に発生し、2 つのメールを受信した理由は、1 つではなく 2 つの繰り返しジョブがバックグラウンドで実行されていることを意味します。
現在の定期的なジョブの実行が 30 分を超えた場合に、hangfire が新しい定期的なジョブを自動的に開始しないようにするにはどうすればよいですか? ありがとう