Windows Azureオペレーティングシステムは、実行中のワーカーの役割を時々自動的に再起動またはリセットしますか?または、Run()メソッドにループがある場合、Workerロールが無限に実行されているという事実に依存できますか?
2 に答える
ロール インスタンス (Worker または Web) は、ゲスト OS が月単位で更新されるため、少なくとも月に 1 回リサイクルされます。ホスト OS は四半期ごとに更新されるため、追加の役割のリサイクルが発生する可能性があります (ホストとゲストの更新が別々に実行される場合)。
とは言っても、使用するゲスト OS のバージョンを指定することで、最新のゲスト OS に自動更新しないことを選択できます。ホスト OS の更新をオプトアウトすることはできません。
一般に、無限に実行されるロール インスタンスに依存するべきではありません。将来的に再起動があると想定する必要があります。ホスト OS の更新とは別に、発生する可能性があり、発生するハードウェア障害があります。
ゲスト OS の更新について詳しくはこちらを、ホスト OS の更新についてはこちらをご覧ください。
いかなる場合でも、ホスト マシンが継続的に実行されていることに依存することはできません。更新のために停止することがあり、何らかの理由でクラッシュする可能性があります。そのため、コードは定期的にチェックポイントを認識して設定し、再開できる必要があります。
はい、while( true ) doStuff()
ループを作成することはできますが、グローバル ストレージ (SQL Azure、BLOB、キュー、テーブル) に影響を与える操作によって、そのストレージが常に一貫した状態になるようにコードを設計する必要があります。このようにして、ループが中断された場合 (クラッシュまたは実行中のスレッドを中止するための例外によって)、ロールが再起動されるとコードを再開できます。