Hitachi

Cosminexus V11 アプリケーションサーバ & BPM/ESB基盤 概説


4.3.3 可用性と耐障害性の向上

ミッションクリティカルな業務システムには,システムが提供するサービスをできるだけ停止することなく,安定して提供し続けられる仕組みが求められます。

例えば,提供するサービスの内容によっては,24時間連続稼働が求められるサービスや,障害が発生して業務システムが止まることで大きな損失が発生するサービスもあります。

このため,業務システムの基盤であるアプリケーションサーバには,まず,障害を未然に防ぐこと,そして,もし障害が発生しても,障害の影響範囲を局所的に抑え,業務システムを止めることなく運用し続けられることが求められます。また,障害が発生した個所は迅速に回復できることが必要です。

ここでは,アプリケーションサーバで実現できる,可用性と耐障害性の高いシステムの特長について説明します。

〈この項の構成〉

(1) FullGCの発生抑止

FullGCの発生を抑止することによって,システムが停止する回数を低減します。

FullGCは,JavaヒープのTenured領域のオブジェクトが増加することで発生します。Tenured領域には,長寿命なオブジェクト(利用期間が長いオブジェクト)が配置されます。アプリケーションサーバでは,FullGC発生の要因になる長寿命なオブジェクトのうち,利用期間が明確なオブジェクトを独自のメモリ空間に配置します。このメモリ空間をExplicitヒープといいます。ExplicitヒープはFullGCの対象にはならないため,これらのオブジェクトによるFullGC発生を抑止できます。

アプリケーションサーバでは,HTTPセッションに関するオブジェクトをExplicitヒープに配置します。

HTTPセッションに関するオブジェクトの場合のExplicitヒープを使用したFullGCの発生抑止の概要を次の図に示します。

図4‒6 Explicitヒープを使用したFullGCの発生抑止の概要

[図データ]

New領域からTenured領域に昇格するオブジェクトの一部をExplicitヒープに移動します。これによって,Tenured領域のメモリサイズ増加を抑え,FullGC発生を抑止します。

このほか,ユーザアプリケーションの修正によって,アプリケーション内でFullGCの要因になっているオブジェクトを直接Explicitヒープに生成する実装もできます。

(2) 障害発生の未然防止

アプリケーションやリソースの稼働状態を監視して,障害の予兆を検知し,障害発生を予防できます。また,しきい値を設定して監視することで,しきい値を超えた場合に自動的に対処するためのアクションも定義できます。

例えば,リクエストの集中によってJavaVMでFullGCが多発する場合に,一定時間内に発生するFullGCの回数にしきい値を設定して監視できます。しきい値を超えた場合にリクエストの同時実行数を動的に減らすなどの処理を自動実行することで,システムのスローダウンを予防できます。

(3) 障害発生時の可用性向上

障害発生時の可用性を高めるためには,次の機能を使用できます。