質問

ることはあまりないかもしれないお客様の課題解決のためにより再コンピュータ、ルータ、プログラム、ブラウザ?なにより再インストールのレーティングシステム又はソフトウェアょにいかがですか?

といっていいのかもしれない共通パターンがあると疑ソフトウェアコンポーネントがない状態にしてあなただけの初期状態による電源の再投入により自動的に復帰。

っていると聞いているアマゾン/Googleは、クラスターの多くノード。一つの重要な財産であり、各ノードで再起動します。そのため、その一つに失敗した場合、その帰国で初期状態をうかがわせるものとなっている再起動します。

ある言語の枠組み/デザインパターンにあるこのレバレッジtechinqueとして第一級の国籍でないといけませんか?

編集 のリンクを記述する一原理アマゾンとしての原理の可用性と一貫性:http://www.infoq.com/presentations/availability-consistency

役に立ちましたか?

解決

これは、組み込みシステムの世界および通信で一般的です。サーバーベースの世界ではあまり一般的ではありません。

興味のある研究グループがあります。回復指向コンピューティングに取り組んでいますa>または" ROC"。 ROCの重要な原則は、どのプログラムでも最もクリーンで、最高で、最も信頼性の高い状態が、起動直後であることです。したがって、障害を検出すると、障害からの回復を試みるよりもソフトウェアを再起動することを好みます。

十分に簡単に聞こえますか?まあ、ほとんどの研究はそのアイデアを実装するために行ってきました。その理由は、あなたと他のコメント者が指摘したとおりです。OSの再起動は回復方法としては遅すぎます。

ROCは3つの主要な部分に依存しています:

  1. 障害をできるだけ早く検出する方法。
  2. システムの残りを維持しながら、障害のあるコンポーネントを隔離する手段。
  3. コンポーネントレベルの再起動。

ROCと一般的な「夜間再起動」との本当の重要な違いは、アプローチは、ROCはリブートが反応する戦略であるということです。つまり、ほとんどのソフトウェアはある程度のエラー処理と回復(スローアンドキャッチ、ロギング、リトライループなど)で記述されています。ROCプログラムは障害(例外)を検出し、すぐに 終了します。 2つのパラダイムを混在させると、両方の世界の最悪の部分、つまり信頼性とエラーが低くなります。

他のヒント

これは、unix / linuxの世界では実際には非常にまれです。これらのoseは、不正なプロセスから自分自身を保護するように設計されています(ウィンドウも同様です)。 Googleは、不正なソフトウェアを修正するためにハードリスタートに依存していないと確信しています。私はこの手法を採用すべきではないと言います。誰かが彼らのソフトウェアを回復するための最も致命的なルートが何か他のものを探すべきだと言ったら!

マイクロコントローラーには通常、ウォッチドッグタイマーがあります。ウォッチドッグタイマーは(コード行で)頻繁にリセットする必要があります。そうしないと、マイクロコントローラーがリセットされます。これにより、ファームウェアが無限ループに陥ったり、入力を待機したりするのを防ぎます。

未使用のメモリは、リセットを引き起こす命令に設定されるか、リセット時にマイクロコントローラが起動するのと同じ場所にジャンプすることがあります。何らかの理由でプログラムメモリ外の場所にジャンプした場合、これによりマイクロコントローラーがリセットされます。

組込みシステムがチェックポイントの特徴がありませんの現在のスタックで保存されます。メモリの不揮発電を再起動(電池を裏付け、出力を開始、テストされた場合にも、コードのニーズにジャンプに所だから新鮮なシステム。

私も同様の技術が高度化)を使用してアマゾン/Google.

デザインパターン自体は考えられませんが、私の経験では、「select is broken」の結果です。開発者から。

過剰な呼び出しとキャッシングがないことに加えて、接続管理が不十分であるため、50ユーザーのサイトがSQL Server Enterprise Edition(750 MBデータベース)とNovellサーバーの両方に障害を起こしました。開発者によると、Novellは常に「CloseConnection」が見つからないことが原因である 犯人でした。コアライブラリを呼び出します。それまでに、1行のコード行の不足に対処するためのアップグレードに数千人が失敗しました。

(なぜEnterprise Editionが私の向こうにあったのか、聞かないでください!!)

Apacheで実行されているphpなどのスクリプト言語を見ると、呼び出しごとに新しいプロセスが開始されます。基本的な場合、プロセス間で共有状態はなく、呼び出しが完了するとプロセスは終了します。

プロセスがフェイルファーストになるように設計されており、一貫性のない状態のままにできないため、プロセスが終了すると解放され、エラー処理の必要性が少なくなるため、リソース管理の利点が少なくなります。

アプリケーションレベルでいくつかの場所を見てきました(爆弾が発生するとアプリが自動的に再起動します)。

アプリケーションレベルでパターンを実装しました。Dbaseファイルからのサービスの読み取りは、x回読み取った後にエラーが発生し始めます。スローされる特定のエラーを探し、そのエラーを検出すると、サービスはプロセスを強制終了してサービスを再起動するコンソールアプリを呼び出します。それは気味が悪く、私はそれを嫌いますが、この特定の状況では、私はより良い答えを見つけることができませんでした。

また、IISには、特定の条件下でアプリケーションプールを再起動する機能が組み込まれていることに留意してください。

さらに言えば、サービスの再起動は、サービスが失敗したときに実行するアクションの1つとして、Windows上のサービスのオプションです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top