早期解決編ケーススタディ(1)
独自フレームワークによって障害解析が困難に
サービス業C社では、自社の主要サービスを支えるWebシステムを独自のフレームワークで構築。このフレームワークは独自のDBコネクションプールを持ち、複数のリクエストが来ると操作が重複しないように排他ロックをかけて、コネクションプールからコネクションをアプリケーションに返す操作をする構造になっている。 ところが、複数のユーザーからアクセスすると突然応答が遅くなる障害が発生。エラーに至る経緯と原因追究を命じられた担当者は新任で、前任者が構築したこのシステムの詳細な資料がないために調査が行き詰まってしまった。
ボトルネックを解析できる障害解析トレース機能
そこで、担当者が望みをかけたのが、Cosminexusアプリケーションサーバの障害解析トレース機能だった。まず、リクエストの処理時間を追跡し応答時間が遅延している時間帯を推定。次に、同時間帯におけるリクエストの同時実行数をプロットしたところ、ピンポイントで急増している箇所が特定できた。 さらに性能処理時間の長い順からトレース情報をシーケンスに表すと、アプリケーションの内部でボトルネックが発生していることを推測。スレッドダンプを取得した結果、DBコネクションの接続/切断を頻繁に繰り返していることが障害の原因であることが判明したという。
このように、障害解析トレース機能は原因解析のためのアクションを切り分けできる。これにより、専門知識がなくてもボトルネックの局所化がしやすく、多数のポイントから詳細なログ出力を行っても本番環境への影響が少ないことも成功のポイントだった。

障害解析/性能解析を容易にするトレース機能
従来のチューニングや障害発生時の原因調査では、ボトルネックがどこで発生しているのか、あるいはリクエストがどこでエラーとなっているのかを突き止めるために、複数サーバに分散するログをタイムスタンプなどによって付き合わせながら横断的に見比べて問題箇所を調査する作業が必要だった。 また、Webシステムは多くのコンポーネントの組み合わせで構成されているため、ボトルネックの特定作業が非常に煩雑になって、それ相応のスキルが要求される。
しかし、Cosminexusアプリケーションサーバは、あたかも宅配便の荷物がお問い合わせ番号から、いつどの地点を通過したかを追跡できるように、全てのリクエストごとにユニークな識別子を付与して、サーバ内の各処理ポイントでトレース情報を取得。その識別子によってリクエストが通過した時刻や各ポイントでの負荷情報を採取され、これらのログを1箇所に収集して追跡できるため、障害時の原因箇所を容易に特定できる。また、性能チューニングや障害発生時のログ解析などが容易だ。
さらに、DBのコネクションIDもログに出力されるので、クライアントからWebサーバ、アプリケーションサーバを経て、DB内部のSQLまでの処理シーケンスを、プログラムをインストールすることなくフルトレースで容易に把握できる。オンライン性能に影響を与えない高速な方式を用いているため、システム稼働時も常にログを出力しておくことが可能となる。
アンケート

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

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

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