レポート

日立はJava VMでWebシステムのボトルネックをいかに回避したか~HITACHI Open Middleware World 2008 Autumn Cosminexus Dayから~

この記事を読むのに必要な時間:およそ 3 分

大胆な発想転換でボトルネックを解消

GCのボトルネック解消には,ノーマルGCやパラレルGC,コンカレントGCなど,従来からさまざまなアルゴリズムが存在しました。しかし,これらはいずれも根本的な解決策にはなりませんし,アルゴリズムの複雑化によりコントロール不可となってユーザの負担が増加してしまうという問題があります。

そこで,根本的に解決するために発想を大胆に転換し,メモリ領域を1つの枠組みで管理することにそもそも無理があるのではないかという発想から生まれたのが,新しいメモリ管理方式である「明示管理ヒープ方式」⁠Eヒープ方式)です。

「Eヒープ領域」の利用によりFull GCの発生を抑止

Cosminexus V8では,Full GCによるボトルネックを解消するために,New領域およびOld領域に格納されるインスタンスの違いに着目しました。前述のようにNew領域には短命なインスタンスが格納され,Old領域にはセッション情報など長命なインスタンスが格納されます。Old領域に格納されたセッション情報はログオフ後も残存し蓄積するため,Full GCを発生させる原因となってしまいます。

Eヒープ方式ではセッションオブジェクトをGCの対象外である「Eヒープ領域」という新しい領域に格納するため,Full GCの発生を抑止します。これにより,業界初(日立調べ)のFull GCレスを実現しています図3⁠。

図3 Full GCレスで業務停止を解消

図3 Full GCレスで業務停止を解消

以前の方式では,Old領域に格納していたセッションプールやスレッドプールといったJavaアプリのオブジェクトプールを,Eヒープ方式ではEヒープ領域に配置します。このため,Old領域にはセッション情報が蓄積しないため,Full GCレスが可能になります。

アプリの変更なしに利用可能なEヒープ方式

CosminexusにおけるEヒープ方式の優れている点として,既存アプリの変更なしに利用できることが挙げられます。具体的には,まずJavaアプリでのセッション生成時にCosminexusがセッションの割り当てとEヒープ領域の確保を実行します。以降,オブジェクトの生成およびセッションへのオブジェクト格納において,インスタンス生成時はまずNew領域に対して実行し,これを高速で処理できるCopy GCでEヒープ領域に移動します。Eヒープ領域に移動されるセッションオブジェクトはNew領域で関連付け情報を付加されるため,アプリ側ではヒープ方式を意識する必要がありません。

なおセッションの終了時には,CosminexusがEヒープ領域を削除します。Eヒープ領域を削除する場合,その削除する領域に共通データなど使用中のデータが存在すると,単純な削除では領域外参照によるアベンド(異常終了)が発生してしまいます。Eヒープ方式では,領域削除時に使用中オブジェクトを自動的に検出し,Javaヒープ領域へ移動します。このため,Full GCに頼らずにEヒープ領域を削除しても問題なく動作可能であり,Javaシステムの特長の一つであるメモリアクセスの堅牢性を確保しています。

極小のオーバヘッドにより処理性能への影響も微小

次に気になるのは,従来方式と比べたオーバヘッドの増加です。結論から述べると,Eヒープ方式によるオーバヘッド増加はほぼ気にならないレベルと言えます。

Eヒープ方式ではCopy GCを使用し,Copy GCの実行時にEヒープ領域への移動候補の解析と,Javaヒープ領域かEヒープ領域かの移動先判定を行っています。

これによるオーバヘッドは従来のCopy GCと比べて最大30%増加しますが,Copy GCの処理時間はもともと数十~数百ミリ秒と極小のため,実質的に処理性能への影響はほとんどありません。日立が試算した例では,従来方式で0.253秒だった平均Copy GC時間がEヒープ方式では0.328秒に30%増加し,処理件数は54万8819件から54万5486件へと0.61%の劣化でした。つまり,処理性能への影響は1%未満に留まっています(表1⁠⁠。

独自開発のJava VMにより各種プラットフォームでFull GCレス

Eヒープ方式によるFull GCレスは,Cosminexus V8の大きな特長となっています。Cosminexus V8では,セッションオブジェクトの自動Eヒープ化を備えたJavaEEサーバとEヒープ領域を追加したJava VMとの密な連携により,業務アプリの変更なしにFull GCレスを実現しました。CosminexusではV5から全プラットフォームに独自Java VMを開発しており,OSやハードウェアの垣根を越え,CosminexusがサポートするすべてのプラットフォームでFull GCレスを実現可能にしています。

表1 CopyGC時間増によるスループット劣化の試算例

測定単位時間10:00.15:45(20,700秒)
平均CopyGC時間0.253秒/回→0.328秒/回(30%増)
処理件数548,819件→545,486件(0.61%劣化)

処理性能への影響1%未満

Cosminexusを選ぶ理由

─編集部 

Cosminexus Dayでは,Cosminexusを導入している2社の事例を紹介する「Why Cosminexus? ~事例に見る,Cosminexusを選んだ理由~」と題したセッションも行われました。事例として登場したのは,小売業向けPOSオンラインシステムのリアルタイム処理から基幹系業務までをカバーするプラットフォーム「RealGate Enterprise」⁠日本NCR⁠⁠,製造業向けの⁠設計現場力強化ソリューション⁠「J-PKM」⁠日本総研ソリューションズ)の2つです。

RealGate Enterpriseは,店舗と本部をイントラネットで結ぶハード,ソフト,運用までを含んだトータルなソリューションで,各店舗の日割り予算なども求められる小売業の業容を実現するミッションクリティカルなシステムです。日本NCR⁠株⁠製品・マーケティング本部 製品企画部 プロダクト・マネジャー 橋立公正氏によると,同システムがオープンシステム化する際,アプリケーションサーバとして,安定性,保守レスポンスやJava VMへのサポート,運用も含めた機能拡張などの観点から,Cosminexusを選択したとのことです。

J-PKMは,組立製造業の設計部門で情報共有・活用,課題管理の強化によって,設計品質の向上,設計手戻りの削減を目指すもので,SOAによって「基礎研究」⁠企画・営業」⁠購買・生産」⁠アフターサービス」などと「開発・設計」の,各部門間でのコミュニケーションを実現するものです。⁠株)日本総研ソリューションズ 第二SI本部 開発第二部 山内和弘氏によると,J-PKMがパッケージとしてSOA対応する際に,複雑な要件をどのように実現するかという観点から,Cosminexusの手厚いサポート,要望への対応を得られたことが,製品開発上も重要であったということです。

著者プロフィール

山本善之介(やまもとぜんのすけ)

フリーランスライター。富山県出身。プログラマから編集プロダクション勤務を経て,現在はIT系を中心に執筆活動中。趣味はPHPやVisual Basic,MySQLなどによるプログラミング,時刻表や地図を読むこと。池波正太郎と山本夏彦,小林よしのりのファン。