PR

Javaシステムで実際に起きたトラブル事例を紹介し,解決策などを解説する。今回は,WAN越しの一部の処理でトラブルが起き,待ち状態がほかの処理にも影響した例だ。リソースを増やしても問題解決せず,複数の解決策を検討することになった。

 本連載ではJavaシステムのトラブル例を取り上げ,その原因,代替案,解決策などを解説します。Javaシステムを題材にしていますが,言語は違ってもトラブルの本質には共通する点がありますので,Javaを使わない方にもぜひ読んでほしいと思います。

 連載2回目は,部分的なネットワーク障害により,本来なら利用できる機能(アプリケーション)まで使えなくなったWebシステムのケースです。まずは,トラブルの症状から説明しましょう。

トラブルの症状と原因

[症状] ある企業の一つの支社で,突然,Webシステムが利用不能に陥りました。調査したところ,次の事実が確認できました。

問題1:Webサーバーからの応答がないのでクライアントPCのWebブラウザは待ち状態になり,長い時間待たされていました。

 Webサーバーからの応答がなかった理由は,ルーターの故障でした。本部とその支社間を接続するルーターが故障し,本部に設置したサーバーからのパケットが大量に欠落してしまったことが原因です。パケットは欠落していましたが,アプリケーションはすぐにエラーとなりませんでした(別掲記事「LANケーブルを引き抜いてもすぐにエラーにならない」を参照)。また,ネットワークが完全に切れてしまうのではなく,中途半端につながっているので,バックアップ回線に切り替わりませんでした。切り替わらなかったことは問題なのですが,それよりも問題視されたのは次の点です。

問題2:本部-支社間のネットワークを利用するアプリケーションだけでなく,支社内のサーバーで閉じたアプリケーションも利用停止状態に陥った。

 問題2は予想外でした。本部-支社間のネットワークに障害が起こっても,支社内のサーバーだけで処理されるアプリケーションに影響は及ばない。そう考えていました。問題2はなぜ起こったのでしょうか。

 システム構成から説明します。支社には,Webサーバー,アプリケーション(AP)サーバー,データベース(DB)サーバーなどがあります(図1)。ほとんどの業務処理はこれらのサーバーで処理されますが,コストの計上など一部の業務処理は本部に設置したサーバーのWebサービスを呼び出す仕組みでした(図2)。利用者は支社のサーバーか本部のサーバーかを意識することなく,支社内にあるWebサーバーにログインして業務を行います。また,クライアントPCでは業務システムの利用だけでなく,オフィス・ソフトでプレゼンテーション資料の作成なども行います。

図1●システム概要
図1●システム概要
図2●システムのシーケンス図
図2●システムのシーケンス図
クライアントPCからのリクエストはすべてWebサーバーが受け,Webサーバーは支社内のAPサーバーを呼び出す。APサーバーは処理内容に応じて,本部サーバーのWebサービスを呼び出す
arton(本名:田島 暁雄 / たじま あきお)
業界特化型のコンピュータ・メーカーに勤務。入社当初はメインフレームのミドルウエア開発を担当。その後,ダウンサイジングに合わせてUNIXサバー,Windowsクライアント/サーバー,組み込み機器をカバーする分散型業務シーステムの設計から実装まで幅広く担当する。JavaEE,C#,Rubyに関する複数の著書がある。2007年度マイクロソフトMVP(XML)