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%未満にとどまった。

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング