早期解決編ケーススタディ(2)
メンテナンス時期直前になるとレスポンスが悪化する原因は
24時間のサービスを提供するD社。24時間稼働のため月1回のペースで数分間だけシステムを止めて、サーバ再起動などのメンテナンスを行っている。だが、メンテナンス時期に近づくほどシステムレスポンスが悪化していることがわかった。
担当者が稼働状況を確認したところ、メモリ使用量が右肩上がりで推移し、メモリの解放が完全に行われていないメモリリークの可能性が高まった。だが、原因究明はここまで。メモリリークの原因追究を行いたいものの、デバッグロジックや解析ツールを活用した調査はシステムへの負荷が大きく、テスト環境での実施が必要で、現在のサービスを止めなければならない。完全に調査は行き詰まってしまった。
メモリリークの原因究明はなぜ困難なのか
メモリリークとは、メモリの解放漏れ(オブジェクト参照の解除漏れ)で発生する現象。Javaアプリケーションでは、不要になり参照されなくなったJavaオブジェクトを、Java VMが自動的に判断してガーベージコレクション(GC)と呼ばれる処理でメモリ領域を開放している。しかし、何らかの要因でこの参照解除が自動的に行われず、メモリが長期間解放されないことが起こる。これがメモリリークとなり、最終的にはメモリ不足でシステムのレスポンス低下やシステムダウンを引き起こしてしまう。
メモリリークの発生要因としては、アプリケーションプログラム間で使用するテーブルなどに登録するオブジェクトの登録解除漏れや、ユーザープログラムの設計ミス、キャッシュなどの削除漏れなどが考えられる。 しかし、このメモリリークの発見はかなり難しいのが現実だ。対策として、アプリケーションプログラムにプロファイラを埋め込んだり、解析ツールを適用して原因を特定したりする方法が行われているが、出力される大量のログや解析ツールの負荷が大きいため本番環境での適用が難しく、かといってテスト環境ではアプリケーションの挙動が再現しづらいため、原因の特定が困難になる。
メモリリークの早期解決に有効なクラス別統計情報出力機能
D社のやっかいなメモリリークの原因究明に役立ったのは、Cosminexusアプリケーションサーバで強化されたトラブルシュート機能のひとつ、クラス別統計情報出力機能だった。標準搭載されている日立製作所独自のJava VMにより、ヒープ領域(メモリ領域)の状態を示す機能があらかじめ組み込まれ、コマンドを実行するだけでクラス毎のメモリ所要量を詳細に出力することができたので、依存関係を把握し障害箇所の特定が容易に可能になった。 また、クラス別統計情報出力機能ではアプリケーションプログラムの変更は不要なため、本番環境のままメモリリークの調査が可能。再現テストの環境を構築する必要がなく、原因調査に費やす時間を大幅に短縮することができたという。

業務やサービスに影響を与えずメモリリークを早期に解決
Cosminexusアプリケーションサーバでは、Java VMにヒープ領域の状態を表示する機能があらかじめ組み込まれているため、Java VMのメモリ空間におけるクラス単位のメモリ消費量をランキングすることにより、メモリリークを引き起こしているクラスを推定。さらに、そのクラスを参照しているモジュールを特定することで、解放されない要因の把握を可能にする。メモリリークが発生した場合でも、他のアプリケーションサーバのように再起動することなくこれらのメモリ使用状況情報を収集するので、業務やサービスに影響を与えず、テスト環境では再現が困難なメモリリークを本番環境で早期に解決できる。
また、日立製作所ではJava VMに対して機能拡張を実施。日本語処理の高速化や、JITコンパイラやスレッド間ロック処理などの性能向上により機能強化を実現している。
自社製Java VMで国内にソースを保有して迅速な対応が可能
これまで紹介してきたトラブルシューティング支援の機能については「Cosminexus アプリケーションサーバ活用ガイド」で紹介しているので、機能詳細について知りたい方は一読してみてはいかがだろうか。
なお、日立製作所のCosminexusは国内に開発部隊を抱え、自社製Java VMのソースを保有しているため、迅速なサポート体制を構築しており、サイジングなどのシステム設計段階から開発者自身によるきめ細かな対応がユーザーの高い評価を受けている。
メインフレームで培われた高信頼性設計基準ともに、万が一のトラブルシューティングへの対応力を考えれば、Cosminexusアプリケーションサーバは信頼性の高いシステム基盤と言えるだろう。
アンケート

ビジネスを支えるWebシステム利用動向アンケート
回答頂いた方から抽選で6名にAmazonギフト券5000円分プレゼント
※回答にはCNET_IDが必要です。
アンケート

アプリケーションサーバ関連資料

SOAプラットフォーム Cosminexus アプリケーションサーバ活用ガイド
業務アプリケーション安定稼働の秘訣
システムの不測の事態、ご心配ではないですか?
[PR]企画・制作 朝日インタラクティブ株式会社 営業部