SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート(AD)

突然のレスポンス低下やシステム無応答に対応する
「Cosminexus」Webアプリケーションサーバの技術

独自のチューニングを積み重ね、高い信頼性を実現

  • X ポスト
  • このエントリーをはてなブックマークに追加

 日立製作所のSOAプラットフォーム「Cosminexus(コズミネクサス)」のWebアプリケーションサーバは、サーバサイドJavaの標準技術であるJavaEEに対応しながら、独自の技術が盛り込まれている。今回のレポートでは、その独自機能や信頼性を紹介する。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 業務システムには、機能面や運用のしやすさはもちろんのこと、安定稼動のための信頼性が求められる。日立製作所のSOAプラットフォームである「Cosminexus(コズミネクサス)」のWebアプリケーションサーバは、サーバサイドJavaの標準技術であるJava EEに対応しながら、独自の技術を盛り込み、高い信頼性を実現している。先日開催された『ソフトウェア開発環境展(SODEC)2010』会場にて、同社のソフトウェア事業部の岩井智雄氏に、その特徴を聞いた。

SOAプラットフォーム「Cosminexus」

 Cosminexusとは、SOAに基づくシステム構築・運用を実現するSOAプラットフォーム。その中核をなすWebアプリケーションサーバは、日立製作所がこれまで培ったミッションクリティカル技術を進化させ、「安定したレスポンス」「止まらないシステム」「トラブル対応が簡単」といったWebシステムを実現するために開発された。

 岩井氏は「CosminexusのWebアプリケーションサーバの特徴は、拡張性、導入・運用性、生産性、保守性など、さまざまありますが、V8(バージョン8)からの目玉としてFull GCレスで『STOP The World』を解消できることが挙げられます」と切り出した。

独自の機能「Full GCレス」とは

 JavaベースのWebシステムにおいては、Java仮想マシン(Java VM)のメモリ管理機能であるガベージコレクション(GC)が突然のレスポンス低下を引き起こすことが知られている。GCとは、Java VMが管理するメモリの作業領域(Javaヒープ)のうち、使用済みの領域を破棄して空き領域を整列させる仕組みのこと。

 Javaヒープは、「New領域」と「Old領域」に大別され、Java VMにおけるGCには、「Copy GC」と「Full GC」の2種類がある。Copy GCは、New領域を対象に使用済みのインスタンスを削除する処理で、所要時間はごく短く、システムへの影響は少ない。これに対し、Full GCはJavaヒープ全体を対象とし、Old領域の使用領域がいっぱいになると発生する。この所用時間は1秒から数十秒と長く、実行中は処理が止まってしまう。

 Old領域に残存する情報としては、ユーザーのログインが必要なサイトにおけるセッションオブジェクトが挙げられる。ユーザーを識別するためにセッション情報は必要なため、セッションオブジェクトは長寿命となり、ログオフ後はOld領域に残存し、Full GCでまとめて解放されるため、レスポンスの低下は避けられない。例えば、ショッピングサイトやチケット予約サイトで数十秒間システムの応答がなかったら、ユーザーは注文ができているかどうか不安に思い、何度も同じリクエストを送信してしまうかもしれない。

 この問題に対処するため、Cosminexusでは、Java VMに『明示的ヒープ領域』を設け、これをGCの対象外とする方式を採用し、Full GCレスを実現した。Javaヒープ内に滞留するセッションオブジェクトなどを、明示的ヒープ領域に自動的に割り当て、Old領域に残るオブジェクト量を減らすことでFull GCを抑制するという仕組みだ。

Full GCレス機能の仕組み(製品情報のウェブページより一部抜粋)
Full GCレス機能の仕組み

 「例えば、テーブルがすべて汚れた状態まで片付けをせず、片付けの間お客様を待たせているのがFull GCの状態です。空いたテーブルをこまめに片付け、待ち時間を与えずにお客様を案内できるのがFull GCレス機能です。他社製品の場合は、Full GCの発生間隔を長めにしたり、Full GCの処理自体を短くし、回復の時間を早めたりといった手法をとられていますが、Full GCレスは弊社独自の機能です」と岩井氏は語る。

 セッションオブジェクトの明示的ヒープ領域への移動は、所要時間の短いCopy GCで行うため、システム全体のパフォーマンスにはほとんど影響しないという。日立製作所が行った試算では、Copy GCの時間は30%増加したものの、処理件数は0.61%の劣化、処理性能への影響は1%未満にとどまった。

独自のメモリ管理でもプログラム側の変更は必要なし

 SODEC会場の日立製作所ブースでは、チケット予約のWebアプリケーションによるデモが行われた。Full GCが起こりやすい環境と、Full GCレス環境を同一の画面で比較したものだ。Full GCが発生しているときに注文ボタンを押すと、応答が遅く待たされる。Full GCレス環境の場合は、どのタイミングでもすぐに応答した。デモでは、両者のJavaヒープ中のOld領域もグラフ表示され、Full GCレス環境ではOld領域がいっぱいになることはなかった。

画面左はFull GCレス機能がオフになっているため、Full GCが発生し、応答が遅くなっている
画面左はFull GCレス機能がオフになっているため、Full GCが発生し、応答が遅くなっている

 レスポンス低下の要因を減らすFull GCレスだが、独自のメモリ管理のため、アプリケーションに変更を加えなければならないという開発者の懸念もある。しかし岩井氏は「Full GCレスは、Java VMとアプリケーションサーバが連携して実現するので、プログラム側の変更の必要はありません」と導入のしやすさへの配慮も語った。

 こうした機能の追加や配慮は、日立製作所が自製のJava VMを備えているため可能となる。日本語文字列処理などといった国内ならではの課題に対するクライアントのニーズをとらえ、独自のチューニングを積み重ねてきた結果だ。最新のV8.5からのFull GC機能では、フレームワークの定義情報なども対象にしたいというニーズに応え、セッションオブジェクト以外に、ユーザーが任意に指定した情報を移動できるようにし、適用範囲を拡大している。

 また、CosminexusのWebアプリケーションサーバには、Full GCレスなどの安定稼動のための機能のほか、エラー箇所を絞り込むためのトレース機能、メモリリークの原因の特定を行うためのクラス別情報出力機能など、障害の早期解決に向けた機能も搭載している。

秒単位の処理が必要な業務に最適

 システムの安定稼働を実現するための機能を備えていることから、CosminexusのWebアプリケーションサーバは、チケット予約、ネット証券、ネットバンキングなど、秒単位での処理が求められるミッションクリティカルな業務を支える基盤に適用されている。岩井氏は最後に「Full GCレス機能は、ショッピングサイトを構築・運用しているクライアント様に好印象です。このような機能をはじめとして、Cosminexusが提供するさまざまな製品を組み合わせることで、システムの安定稼働を支える基盤を実現できるところに高い評価を頂いています」とアピールした。

 Cosminexusの詳細や、評価版のダウンロードについては同社のサイトを参照のこと。

参考資料

Cosminexus V8.5で強化された仮想化技術とは...

 企業の情報システム構築を支援するオンラインメディア「EnterpriseZine(エンタープライズジン)」では、Cosminexusの最新版V8.5で強化された仮想化技術の特長を取り上げています。こちらもぜひ併せてご参照ください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5196 2010/06/01 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング