アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 
 @IT > Java Virtual MachineがJavaの弱点!?
 
@IT[FYI]

 
  Java Virtual MachineがJavaの弱点!?

Javaでミッションクリティカルを実現する方法とは

本記事は、日本ヒューレッド・パッカードのHP-UX Developer Edgeに掲載された記事を許諾を得て、再構成したものです。詳しくは、HP-UX Developer Edgeの以下の記事をご参照ください。(要登録、登録無料)

『「ミッションクリティカルJava」の真意とは』

 Javaの爆発的な普及の原動力となったのが、CやC++とは一線を画すJava Virtual Machine(以下JVM)のアーキテクチャである。しかしミッションクリティカル環境では、このJVMが「アキレス腱」となることもある。JVMが内包する問題点を明らかにするとともに、この問題を解消するヒューレット・パッカード(以下HP)のソリューションを紹介する。

  Javaはミッションクリティカル環境のアキレス腱?

 Javaの爆発的な普及の原動力となったのが、高いポータビリティを実現するJVMアーキテクチャである。しかしミッションクリティカル環境では、このJVMが、逆に「アキレス腱」となることもある。では、JVMが内包する問題点とはどのようなものなのだろうか?

JVMには「パッチ」が提供されない

 例えばOSにバグがある場合、OSベンダはすぐさまパッチを公開するのが通例である。Windowsであれば、「Windows Update(あるいはMicrosoft Update)」を通じて随時パッチを入手してインストールできる。UNIXの場合も、個々の細かなバグについて、ベンダ各社からタイムリーにパッチを入手できる。よって、アプリケーションの修正では対処できないOS側の問題も、適切なパッチさえ当てればすぐに解決可能だ。例えば、あるUNIXベンダでは、ミッションクリティカル向けサポート契約を結ぶユーザーに対し、SLAベースのミッションクリティカルサービスを提供している。これは、OSにバグが発見されたとき、2週間以内のパッチ提供を保証するものである。システム担当者は、これによりユーザーに対して「いつまでに問題を修正できます」と回答できる。

 しかし、JVMのバグについては事情が異なる。例えばサン・マイクロシステムズ(以下サン)は、同社が無償公開しているJVMについて、個々のバグを修正するためのパッチを提供していない。その代わりに、JVMのバグレポートを集めた「Bug Database」を一般公開しており、そこで多くの投票数を集めたバグから優先的に修正し、数カ月に1回のマイナー・バージョンアップ時に反映させる。個々のバグは、運がよければ次回バージョンアップで修正されるが、再現性の低いバグや日本語環境に固有のバグなどは投票数が集まりにくく、修正までに時間がかかる可能性もある。そのためシステム担当者は、JVMのバグがアプリケーション運用に深刻な影響を与えているような状況でも、それが解消される時期を明確に返答できないのである。

 バージョンアップによるバグフィクスの弊害はほかにもある。それは、バージョンアップのたびにJavaアプリケーションのテストを繰り返さなくてはならないことだ。

 JVMのバージョンアップでは数十個のバグが一斉にフィクスされ、時には機能追加や仕様変更も実施される。例えばサンが2004年9月に公開した「J2SE 5.0」は、2005年5月の「J2SE 5.0 Update 3」までに3回のマイナー・バージョンアップが実施され、合計で270件以上のバグがフィクスされている。これだけ大量の修正が施されれば、特にミッションクリティカル環境ではアプリケーションの回帰テストを実施せざるを得ず、OSのバージョンアップに匹敵する検証作業が必要となる。また、もし1回のバージョンアップで懸案のバグがすべて解消されなければ、数カ月後にはもう1度バージョンアップしなければならない。

サポート期間が短い

 ミッションクリティカル環境におけるJVMのもう1つの問題点は、サポート期間の短さである。ミッションクリティカル・システムは、1度カットオーバーしたら数年間は大きなバージョンアップをせずに継続運用することも少なくない。そのため、ミッションクリティカル向けのOSやアプリケーション・サーバでは長期サポートの提供が一般的である。例えば、ミッションクリティカル向けの代表的なUNIXであるHP-UXでは10年間、BEAのWebLogic環境では約5〜7年間のサポートが利用可能だ。これに対し、特定バージョンのJVMのサポート期間は、ISV検証にかかる時間を除くと実質3〜3.5年程度。その後はシステムのバージョンアップを余儀なくされるのが実情だ(図1)。

図1 JVMサポート期間の現状

 このように、ミッションクリティカル環境におけるJava導入には、実のところ「死角」があったといわざるを得ない。そこで続いては、これらの問題点を解消し、ミッションクリティカル環境でのスムーズなJVM運用を実現するソリューションに注目してみよう。

  HPの新提案「MC Javaサポートソリューション」とは

 HPでは、上述したようなJVM利用の問題点を解消する「MC Javaサポートソリューション」の提供を2005年5月から開始した。これは、JVMに対してSLAベースの長期サポートとパッチ提供を実施するという、業界初の試みである。

 MC Javaサポートソリューションは、以下の点を特徴とする。

  • 24×7サポート体制とSLAベースのパッチ提供
  • エンタープライズサポートライフ
  • サポータビリティ・ツールキット(SKIT)

24×7サポート体制、SLAベースのパッチ提供

 MC Javaサポートソリューションで特に目を引くのは、JVMへのパッチ提供が実施される点だ。HPは、サンからのライセンス供給を受けてHP-UX対応の「HP JVM」を開発し提供している。今回のソリューションでは、このHP JVM向けにHPが独自に作成するパッチが提供される。このパッチをHP JVMに適用することで、個々のバグだけを修正できる。また、すべてのパッチは、HP社内で主要なISVソフトウェアとの動作検証を実施し、さらにISV各社の承認を得てから提供される。こうした信頼性の高いパッチの供給により大がかりなJVMのバージョンアップは不要となり、タイムリーな対応が可能となる。

 また今回のソリューションでは、2週間以内を目標にパッチを提供するというミッションクリティカルレベルのSLAが盛り込まれた。こうしたSLAベースのリアクティブ条件を明示したJVMのサポートサービスはほかに例がない。このサポート体制により、JVMのバグがいつまでに修正されるか、明確な根拠をもとにユーザーに説明できるようになるはずだ。さらにMC Javaサポートソリューションでは、Java専任のエンジニアが24時間365日体制でサポートを提供している。

エンタープライズサポートライフ

 今回のMC Javaサポートソリューションでは、この標準サポートに加えて、ミッションクリティカル向けの長期サポートが用意された。具体的には、JVMのメジャーバージョンアップ後、1〜1.5年の評価期間をへて高信頼性が確認されたマイナーバージョンを、HPが「MCサポート対象版」として認定する。標準サポートでは同バージョンに対するサポート期間は残り3〜3.5年となるが、MC Javaサポートソリューションではさらに期間を3年間延長する。つまり、合計で6〜6.5年の長期サポートを受けられるわけだ。これにより、長期運用を前提としたITシステムでもJVMのサポート計画を立てやすくなる(図2)。

図2 エンタープライズサポートライフの提供

コラム サポータビリティ・ツールキット(SKIT)
 MC Javaサポートソリューションではさらに、Javaアプリケーションの障害発生時の解析や切り分け作業を支援する「サポータビリティ・ツールキット(SKIT)」を提供する。これは、「JVMのコアダンプ解析」を支援するツールである。

 メインフレームや商用UNIX上に構築されたミッションクリティカル・システムでは、プロダクション環境で障害が発生した際にアプリケーションのコアダンプ解析を実施し、原因を究明するのが一般的である。しかし、JVMのコアダンプ解析には高い知識レベルが要求され、また事前に詳細な情報収集が必要となる。そのため、JVMのコアダンプ解析はこれまで一般的ではなかった。この問題を解決するべくHPが開発したツールがSKITである。SKITは、単なるプロファイリング・ツールと異なり、プロダクション環境でのトラブルシューティングで特に優れた威力を発揮する。

 SKITは、今後さらなるサポータビリティ強化に向けて機能が拡張される計画だ。詳細については、HP-UX Developer Edgeの「JVMのコアダンプ解析を支援する「SKIT」の実力」を参照してほしい。。

Core Analyzerによるヒープ解析

ミッションクリティカルJavaとHP

 HP-UXやHP Serviceguardでの実績に代表されるように、HPはもともとミッションクリティカル分野を得意とするベンダだ。そのため、HP JVMもまたミッションクリティカル環境での利用に耐える品質の高さが特徴である。例えばHP JVMのリリースに際しては、サンが規定する互換性テストをパスしたうえで、ストレス・テストや回帰テスト、OS互換性、パフォーマンスなどOS並みの厳格なテストが施される。続いてHP社内のラボで各種ISVソフトウェアとの検証作業が行われた後、ISV各社での検証作業が実施される。こうして初めてリリースにたどり着くのである。こうした一連の過程で得られた結果は、HPのJava開発ラボにフィードバックされ、次回リリースに反映される。

 さらにHPでは、ミッションクリティカル環境の現場で得られたノウハウもとにJavaパフォーマンス・チューニングのための多彩なツールを開発しており、それらを無償で公開している(下記コラム参照)。

 HPが提供する数々のJavaソリューションは、ミッションクリティカル環境でのJava運用が抱えていた「空白部分」を埋める手段としてSIerにとって強力な武器となるはずだ。

コラム HPのJavaパフォーマンス・チューニング・ツール

HPjconfig
  HP-UXのカーネル・パラメータをJavaアプリケーションに合わせてチューニングするためのツール。適切な最新パッチがカーネルに適用されているかをチェックする機能も備える。
   
HPjtune
  JVMのガベージ・コレクション(GC)を解析するためのツール。JVMから得られたプロファイリング・データに基づいてGCの状況を分析し、パフォーマンスの改善に役立つ情報を提供する。GC時のリソース利用状況や、アプリケーションのパフォーマンスにGCが与える影響、ユーザーが解析対象として選択したメトリクスのグラフ表示が可能。
   
HPjmeter
JVMのプロファイリング・ツール。メソッドのコール回数や経過時間、コールグラフのツリー表示、生成/残存オブジェクトなどをグラフィカルに表示する。アプリケーション解析に役立つ数多くの情報を提供する。
   
HP OpenView Glanceplus
  HP-UXのパフォーマンスやボトルネック、CPU、メモリ、ディスク、LANリソースの使用状況をグラフ表示するツール。これらの情報を階層化して表示するため、さまざまな視点からシステム・パフォーマンスを監視できる。

提供:日本ヒューレット・パッカード株式会社
企画:アイティメディア 営業局
制作:@IT 編集部
掲載内容有効期限:2005年10月25日
 
関連リンク

@IT News/記事
Javaを基幹業務で使うには、HPの答えは「サポート能力」(2005/12/10)
HP-UX対応ブレードサーバでSolarisを狙い撃ち、HP(2005/12/9)
実行スピードに挑戦するJavaアーキテクチャの変遷をたどる(Java Solution)
チューニングのためのJavaVM講座(前編)(Java Solution)
チューニングのためのJavaVM講座(後編)(Java Solution)
J2EEパフォーマンスチューニング(Java Solution)
Javaパフォーマンスチューニングのルール(Java Solution)
Javaのガベージ・コレクションを知る(Java Solution)
Javaのヒープ・メモリ管理の仕組み(Java Solution)
マルチスレッドによるリソース競合から守る(Java Solution)
メモリ・リークの発見(Java Solution)
HotSpot VMの特性を知る(Java Solution)



 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ