「だんまり」を決め込むWebシステム。バグをどう見つける? :Cosminexus V8 Review
開発やシステム運用段階においてWebシステムの無応答状態が発生した場合、原因となるアプリケーションプログラムを特定するのは難しい。Cosminexus標準搭載のJavaVMには、このような問題を解決するトレース機能が備わっている。
Webシステムが「だんまり」。原因はアプリケーションのバグ
Webシステムにおいて、突然ログインが出来なくなったり、操作中の画面が無反応になって利用者が何も操作ができなくなるが「だんまり」発生することがある。この何も反応のない無応答状態が発生する原因のひとつにJavaアプリケーションプログラムのバグによって、あってはならない無限ループやデッドロックで処理が止まってしまうケースがある。
このようなバグのあるアプリケーションプログラムを特定するには、一般的にはJava VMの内部状態情報であるスレッドダンプを採取することが多いだろう。
スレッドダンプから無応答アプリケーションプログラムの特定は困難
しかし、数あるアプリケーションプログラムから犯人を特定するのは非常に煩雑な作業だ。その理由はスレッドダンプがダンプを採取したその瞬間におけるJavaアプリケーションの実行状態を記述したものだからである。
スレッドダンプではマルチスレッドプログラムを実行中の各スレッドのトレースを見ることができるが、このスレッド情報から無応答状態を発生させるような怪しいプログラムを推測するしかない。しかもこの怪しいプログラムをなかなか特定できないケースも多い。なぜならスレッドダンプは、採取された瞬間の断片的な情報であるため、実際に停止しているのかを判断ができないからだ。この問題を解決する方法としては、間隔をあけて複数回のスレッドダンプを採取することが挙げられるが、このタイミングやスレッドダンプの確認方法は、勘や経験に頼るところも多い。
拡張スレッドダンプでプログラムバグ究明を確実に
このような問題の解決を支援するため、Cosminexusに標準搭載されているJavaVMではスレッドダンプに以下のような情報を採取できるようにしている。これにより、勘や経験に頼ることなくスピーディにプログラムを特定できる。
(a)スタックトレースのローカル変数情報
スタックのトレースに出力される各メソッドの引数とローカル変数の値を出力する。これによりトレース時点の各メソッドの変数情報の妥当性が検証できるので不正な箇所の特定に有効であり、開発時のデバッグに特に効果的である。
(b)スレッドごとのブロック回数、待ち回数
変数以外の排他処理の妥当性を確認ができるため、デッドロックなどの有無を調べることが可能である。
(c)スレッドごとのCPU消費時間
実際にCPUを使った時間を確認できる。これによりそのスレッドが実際にどのくらい動作していたかが分かる。CPU消費時間が少なければ、例えばI/Oに時間がかかっていたり、OSや他のプロセスの負荷の影響により本当にスレッドが動いていないなど、外部の影響が原因かどうかの判断も可能である。
次回は、メモリリークの原因究明について解説する。
関連記事
- Cosminexus V8 Review:プロの技をシステム化せよ!失敗しないキャパシティ管理
システムの安定稼働を目指すうえでは、サーバのキャパシティを管理することが大切だ。だが、予期せぬ事態への対処には人の判断や操作が介在し、さらなる障害を招きかねない。これを防ぐ方法とは何だろうか。 - Cosminexus V8 Review:誰もができる、一貫した性能ボトルネック解析
性能ボトルネックの解析は、SEの経験やスキルが求められるやっかいな作業だ。クライアント側とサーバ側で一貫した解析を可能にする、Cosminexus搭載の解析ツールについて解説する。 - Cosminexus V8 Review:トラブルよ、さらば!――Webシステム構築のミスを防ぐには
Webシステムの構築の中で特に煩雑になるのが環境パラメータ設定と本番環境への移行だ。これらの作業における手間を省き、ミスをなくすための方法を紹介する。 - アナリストに学ぶ情シストレンド:“サムライAPサーバ”を選択する視点
APサーバには「舶来品」が多い。そのため日本語処理関連で苦労した経験をお持ちの方も少なくないだろう。だが国産APサーバの中には、文字エンコード変換高速化を図り、ユーザーの体感レスポンス改善を図ったものもある。日本の情報システムに最適なAPサーバを選ぶ視点を、アナリストが示す。 - イノベーションに求められる企業情報基盤
去る11月18日、六本木アカデミーヒルズ40にて日立製作所のソリューションを紹介するOpen Middleware World 2008 Autumn Cosminexus Dayが開催された。当日は日立製作所の統合情報基盤「Cosminexus」が牽引するイノベーションについて、多数のセミナーが催された。 - Cosminexus V8 Review:Webアプリの開発は、デバッグ含めワンストップで――MyEclipse
エンタープライズ向けのWebアプリケーション開発では、生産性向上や品質向上に寄与する取り組みや最新技術の採用など、開発環境に求められる要件は多岐にわたる。CosminexusではMyEclipse環境を中心に開発者の要求に応える。 - HITACHI Open Middleware World 2008 Autumn Report:仮想化時代に求められる運用管理の手法とは
11月17日、日立製作所の最新ITソリューションを紹介する「Open Middleware World 2008 Autumn」が開幕した。同社の運用管理ソフトウェアである「JP1」およびアプリケーションプラットフォーム「Cosminexus」の最新機能を中心に、事例や展示を織り交ぜた総合的なソリューション紹介が行われている。 - Cosminexus V8 Review:サーバダウンは起こるもの。だがユーザーには迷惑をかけない!
Webシステムを安定稼働させるための課題は、メモリ管理方式だけではない。想定外のリクエスト集中でもシステムを止めない工夫や、部分障害の全体波及を食い止めたり、障害の兆しを検知して先手を打ったりする必要がある。 - Cosminexus V8 Review:Javaの「Stop The World」を回避する現実解
Webシステムの停止をもたらすFull GCを防ぐ手法、それは「長時間使うインスタンス専用の特別な管理領域を持つ」というものである。 - Cosminexus V8 Review:時間よ、止まるな!――Javaにおけるメモリ管理という課題
運用現場で悩みのタネになっているのが、突然発生するJavaアプリケーションの“Stop The World(一定時間応答のない状態)”である。解決の方法はあるのだろうか?
Copyright © ITmedia, Inc. All Rights Reserved.