Skip to main content
QUICK REVIEW

[論文レビュー] End-User Effects of Microreboots in Three-Tiered Internet Systems

George Candea, Armando Fox|ArXiv.org|Mar 6, 2004
Distributed systems and fault tolerance参考文献 33被引用数 3
ひとこと要約

本稿では、三層構造のインターネットアプリケーションにおける個々のソフトウェアコンポonentの細粒度な再起動であるマイクロリブート—を、フルシステム再起動に比べてダウンタイムと失敗リクエストを削減する軽量でミドルウェアベースの回復手法として提案する。J2EEベースのオークションシステム上で評価した結果、マイクロリブートは失敗リクエストを65%、認識されるダウンタイムを78%削減した。また、最小限の遅延影響で透明なリトライメカニズムを可能にした。

ABSTRACT

Microreboots restart fine-grained components of software systems "with a clean slate," and only take a fraction of the time needed for full system reboot. Microreboots provide an application-generic recovery technique for Internet services, which can be supported entirely in middleware and requires no changes to the applications or any a priori knowledge of application semantics. This paper investigates the effect of microreboots on end-users of an eBay-like online auction application; we find that microreboots are nearly as effective as full reboots, but are significantly less disruptive in terms of downtime and lost work. In our experiments, microreboots reduced the number of failed user requests by 65% and the perceived downtime by 78% compared to a server process restart. We also show how to replace user-visible transient failures with transparent call-retry, at the cost of a slight increase in end-user-visible latency during recovery. Due to their low cost, microreboots can be used aggressively, even when their necessity is less than certain, hence adding to the reduced recovery time a reduction in the fault detection time, which further improves availability.

研究の動機と目的

  • 特に一時的障害に対して、フルシステム再起動の高コストと混乱を軽減すること。
  • アプリケーション固有の変更なしに平均回復時間(MTTR)を短縮することで、システムの可用性を向上させること。
  • 障害したコンポーネントのみを再起動するマイクロリブートが、フル再起動と同等の効果を発揮するが、ユーザーへの影響がはるかに小さいことを示すこと。
  • 現実的な障害シナリオ下で、実世界のインタラクティブでコンポーネント化されたアプリケーションにおけるマイクロリブートの有効性を評価すること。
  • マイクロリブートが失敗する状況を同定し、状態破損や不完全な回復に起因する問題を改善するためのミドルウェアレベルの修正を提案すること。

提案手法

  • オープンソースのJ2EEアプリケーションサーバー(JBoss)に、障害注入、インストルメンテーション、個々のEJBおよび機能サブシステムのマイクロリブート機能を追加した。
  • トレース再生と回復誘発を用いて、実際のユーザーワークロードをシミュレートし、エンドユーザーへの影響を測定した。
  • マイクロリブート中の一時的障害をマスクするために、透明なコールリトライメカニズムを実装し、遅延への影響を最小限に抑えた。
  • アプリケーションの意味論に関する事前知識が不要なアプリケーションに依存しない回復を支援するようにミドルウェアを設計した。
  • 三層アーキテクチャ(Web、ビジネスロジック、データレイヤー)を対象とし、コンポーネント境界と状態の永続性に焦点を当てた。
  • マイクロリブートが状態の破損や回復が不完全な場合に失敗するケースに対処するため、ミドルウェアレベルの強化を提案した。

実験結果

リサーチクエスチョン

  • RQ1三層構造のWebアプリケーションにおいて、マイクロリブートはフル再起動に比べて、ユーザーが認識する障害とダウンタイムをどれほど効果的に削減できるか?
  • RQ2マイクロリブート中に透明なリトライメカニズムを用いることで、一時的障害を効果的にマスクできるか?また、遅延の増加は顕著か?
  • RQ3マイクロリブートで解決できない障害の種別は何か?また、それらの成功率を向上させるためのミドルウェアレベルの変更は何か?
  • RQ4マイクロリブートを用いることで、一時的障害の影響を受けるユーザー数を、フル再起動と比較してどの程度削減できるか?
  • RQ5マイクロリブートの使用により、障害検出が速くなり、より積極的な障害監視戦略が可能になるか?

主な発見

  • マイクロリブートは、フルサーバープロセス再起動と比較して、失敗リクエスト数を65%削減した。
  • マイクロリブートにより、ユーザーが認識するダウンタイムは78%削減され、ユーザー体験が著しく向上した。
  • マイクロリブートは、フル再起動とほぼ同等の効果を発揮したが、その細粒度な性質のおかげではるかに少ない混乱を引き起こした。
  • マイクロリブート中に透明なコールリトライを用いることで、ユーザーが認識する遅延はわずかに増加したが、一時的障害は効果的にマスクされた。
  • マイクロリブートにより、回復中の失われた作業量が最小限に抑えられ、影響を受けるユーザー数が減少し、回復時間が短縮された。
  • 特定の障害ケース(例:セッション状態の破損)はマイクロリブートでは解決されなかったが、著者らはこれらの制限を補うためのミドルウェアレベルの修正を提案した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。