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では業務システムの利用だけでなく,オフィス・ソフトでプレゼンテーション資料の作成なども行います。

