<情報処理システムおよびクライアントの一例>
以下、図面を参照して、実施形態について説明する。図1は、情報処理システム1およびクライアント2の一例を示す。情報処理システム1は、所定の業務(処理)を行うためのコンピュータシステムであり、例えば、クラウドサービスをクライアント2に提供する。
クライアント2は、情報処理システム1を利用する利用者により操作される端末である。クライアント2は、情報処理システム1にアクセスすることで、情報処理システム1が提供する各種サービスを利用する。図1の例では、クライアント2は1台の例を示しているが、クライアント2は複数であってもよい。
図1の例では、情報処理システム1は、Webサーバ3とアプリサーバ4とDBサーバ5とデータベース6と解析処理装置7とを含む。Webサーバ3は、クライアント2との間で通信を行う。図1の例では、データベースを「DB」と表記している。
Webサーバ3は、アクセスログ記憶部3Aを含む。アクセスログ記憶部3Aは、情報処理システム1とクライアント2との間で行われる通信のアクセスログを記憶する。例えば、クライアント2が情報処理システム1にログインした場合、アクセスログには、該ログインの情報が記録される。
アプリサーバ4は、所定のアプリケーションを実行する。実施形態では、アプリケーションは、オンライン業務アプリケーションとバッチ業務アプリケーションとに大別されるものとする。
オンライン業務アプリケーションは、クライアント2からのリクエストに応じて、所定の処理を実行し、レスポンスをクライアント2に返信する動作を行うアプリケーションである。オンライン業務アプリケーションは、逐次処理(オンライン処理)を行うアプリケーションである。
バッチ業務アプリケーションは、所定の処理を一括して行うアプリケーションである。バッチ業務は、オンラインバッチ業務とオフラインバッチ業務とに大別される。オンラインバッチ業務は、情報処理システム1が稼動している間に行われる。オフラインバッチ業務は、情報処理システム1が稼動していない間に行われる。
アプリサーバ4は、アプリログ記憶部4Aとシステムログ記憶部4Bとを含む。アプリログ記憶部4Aは、アプリケーションのログ(ログデータ)を記憶する。アプリログは、アプリサーバ4で実行されるアプリケーションに関するログである。以下、アプリケーションを「アプリ」と略して表記することがある。
システムログ記憶部4Bは、アプリサーバ4で実行されるアプリケーションのシステムに関するシステムログを記憶する。システムログは、例えば、アプリケーションに発生したイベントに関するログを含んでもよい。
DBサーバ5は、データベース6を管理するサーバである。DBサーバ5はSQLトレース記憶部5Aを含む。Structured Query Language(SQL)は、データベース6を操作するための文字情報である。
実施形態では、情報処理システム1が実行する処理はSQL処理であり、該SQL処理の解析(トレース)が行われることにより、DBサーバ5の性能低下の原因の調査が行われる。
SQLトレースは、SQL処理ごとの実行計画(アクセスプランとも称される)や実行時間、実行情報等を表す情報である。SQLトレースは、SQLトレース記憶部5Aに記憶される。SQLトレースは、解析情報の一例である。
解析処理装置7は、所定の記憶装置にSQLトレースを記憶し、記憶されたSQLトレースに基づいて、DBサーバ5に障害が生じた場合における原因を解析する。解析処理装置7は、SQLトレースを記憶するための記憶装置を含んでおり、該記憶装置にSQLトレースが記憶される。
Webサーバ3とアプリサーバ4とはDBサーバ5とは、物理的に異なるサーバであってもよいし、1台のサーバが、Webサーバ3とアプリサーバ4とはDBサーバ5との機能を有してもよい。
解析処理装置7は、Webサーバ3、アプリサーバ4およびDBサーバ5から独立したコンピュータであってもよいし、解析処理装置7の機能はDBサーバ5に含まれてもよい。この場合、DBサーバ5を実現するコンピュータが解析処理装置7になる。
<解析処理装置の一例>
次に、図2を参照して、解析処理装置7の一例について説明する。解析処理装置7は、処理部10と記憶部20とを含む。
処理部10は、主制御部11と演算部12と閾値処理部13と推定部14と判定部15と記憶制御部16と入出力部17とを含む。記憶部20は、アクセス時間記憶部21と処理速度記憶部22と時間閾値記憶部23と速度閾値記憶部24と保存対象記憶部25とを含む。
処理部10の主制御部11は、各種の処理を行う。演算部12は、各種の演算を行う。閾値処理部13は、閾値に関する処理を行う。推定部14は、時間の推定を行う。判定部15は、各種の判定を行う。例えば、判定部15は、DBサーバ5から取得されたSQLトレースを保存対象記憶部25に保存するか否かを判定する。
記憶制御部16は、判定部15の判定結果に基づいて、取得されたSQLトレースを保存対象記憶部25に保存するか否かを制御する。入出力部17は、各種サーバとの間でデータの入出力を行う。例えば、主制御部11の制御により、入出力部17は、DBサーバ5からSQLトレースを取得する。
次に、記憶部20のアクセス時間記憶部21について説明する。アプリサーバ4は、DBサーバ5にアクセスして、DBサーバ5は、データベース6に対して所定の処理を行う。アプリサーバ4は、DBサーバ5との間でコネクションを確立して、コネクションの確立を終了する。
実施形態では、アプリサーバ4とDBサーバ5との間のコネクションが確立してから、コネクションが終了するまでの時間をアクセス時間と称する。アクセス時間は、オンライン業務アプリケーションに関する時間である。アクセス時間記憶部21は、コネクションを特定するコネクションIdentification(ID)ごとにアクセス時間を記憶する。
処理速度記憶部22は、1回のトランザクションに含まれるSQL処理のうち、コネクションIDごとに、SQL処理により処理されるデータベース6のレコード数の合計をSQL処理の処理時間の合計で除算した処理速度を記憶する。処理速度は、バッチ業務アプリケーションに関する速度である。
時間閾値記憶部23は、時間閾値を記憶する。時間閾値は、アクセス時間に基づいて、SQLトレースを保存対象記憶部25に保存するか否かを判定するための指標である。判定部15は、アクセス時間が時間閾値よりも長い場合に、SQLトレースを保存対象記憶部25に保存する。
速度閾値記憶部24は、速度閾値を記憶する。速度閾値は、処理速度に基づいて、SQLトレースを保存対象記憶部25に保存するか否かを判定するための指標である。判定部15は、処理速度が速度閾値よりも低い場合に、SQLトレースを保存対象記憶部25に保存する。
保存対象記憶部25は、判定部15により保存対象と判定されたSQLトレースを記憶する記憶装置であり、SQLトレースが保存される。保存対象記憶部25に保存されたSQLトレースは、DBサーバ5に性能低下が生じている場合における解析処理に利用される。保存対象記憶部25は、保存部の一例である。
DBサーバ5は、多くのSQL処理を行うため、解析処理装置7は、DBサーバ5から多くのSQLトレースを取得する。このため、取得されるSQLトレースの情報量は多くなり、全てのSQLトレースの情報量が保存対象記憶部25に保存されると、短時間で、保存対象記憶部25にSQLトレースを保存することができなくなる。
そこで、保存対象記憶部25は、判定部15により保存対象として判定されたSQLトレースを記憶し、判定部15により保存対象として判定されないSQLトレースは記憶しない。実施形態では、判定部15により保存対象として判定されないSQLトレースは、保存されることなく、破棄される。
<アプリケーションの種別に応じた閾値の一例>
次に、図3の例を用いて、アプリケーションの種別に応じた閾値の一例について説明する。上述したように、実施形態の閾値には、時間閾値および速度閾値の2種類の閾値がある。これら2種類の閾値は、アプリケーションの種別によって、使い分けがされる。
オンライン業務アプリケーションに関するSQLトレースが保存されるか否かは、時間閾値に基づいて判定される。バッチ業務アプリケーションに関するSQLトレースが保存されるか否かは、速度閾値に基づいて判定される。
以下、オンライン業務アプリケーションによる処理をオンライン処理と称することがあり、バッチ業務アプリケーションによる処理をバッチ処理と称することがある。
オンライン処理は、情報処理システム1にアクセスしたクライアント2により行われる逐次処理である。バッチ処理は、情報処理システム1が1回のトランザクションのSQL処理を一括して行う一括処理である。
オンライン処理の場合、SQL処理は、逐次的に処理されるため、処理されるレコード数(処理レコード数)は少ない。バッチ処理は、一括的に処理が行われるため、処理されるレコード数は多くなる。
オンライン処理の場合、処理レコード数は少なく、1つのオンライン処理が他のオンライン処理に与える影響は少ない。このため、オンライン処理が他のオンライン処理に与える影響を確認する必要はない。
バッチ処理は、オフラインとオンラインとに大別される。オフラインのバッチ処理は、他のオンライン業務アプリケーションが稼動していない間に行われる。このため、オフラインのバッチ処理が、他のオンライン業務アプリケーションに影響を与えないため、該影響は確認されなくてもよい。
オンラインのバッチ処理は、他のオンライン業務アプリケーションが稼動している間に行われる。このため、オンラインのバッチ処理は、他のオンライン業務アプリケーションに影響を与える可能性があるため、該影響の確認が行われる。
次に、SQLトレース保存の判断指標および閾値について説明する。DBサーバ5から取得されたSQLトレースは、判定部15の判定結果に基づいて、保存対象記憶部25に記憶される。判断指標は、判定部15による判定が行われる際の指標である。
オンライン処理の場合、指標は、アプリケーションのアクセス時間である。このアクセス時間は、アプリサーバ4とDBサーバ5との間のコネクションが確立して、コネクションが終了するまでの時間である。この場合の閾値(時間閾値)は、レスポンスに基づくアクセス時間に対して統計処理がされた値に設定される。
バッチ処理の場合、指標は、上述した1回のトランザクションの処理速度である。この場合、指標は、上述した処理速度である。また、オンラインバッチ処理の場合、他のオンライン業務への影響の有無も指標として使用される。オンラインバッチ処理の場合、重複した時間帯に実行している他のオンライン業務のSQLトレースにロックやその他の待ちが発生しているか否かも指標として使用される。
<アクセス時間の一例>
次に、アクセス時間の一例について説明する。図4は、アプリサーバ4のアプリログ記憶部4Aが記憶するアプリログの一例を示す。解析処理装置7の主制御部11は、アプリログ記憶部4Aから、例えば図4の例のアプリログを取得する。
例えば、図4の例で示すアプリログには、「connection ID=20141203102355acdc」に対応する「disconnection ID=20141203102355acdc」が記録されている。2つのIDは同じである。前者は、コネクションIDが確立されたことを示し、後者は、同じコネクションIDの確立が終了したことを示す。
アプリログにおいて、両者のコネクションIDにはそれぞれ対応する時刻が記録されている。演算部12は、両者のコネクションIDの時刻の差分を算出する。算出された差分が、アクセス時間である。図4の例では、該アクセス時間は「A」で示される。同様に、別のコネクションIDのアクセス時間は「B」で示される。アクセス時間は、アクセス所要時間とも称される。
<オンライン業務アプリケーションのSQLトレースの選択的保存の一例>
オンライン業務におけるSQLトレースの選択的保存の一例について説明する。オンライン業務の場合、クライアント2が情報処理システム1に対して、リクエストを送信し、情報処理システム1では逐次的な処理を行い、処理結果をレスポンスとしてクライアント2に送信する。
クライアント2が情報処理システム1にリクエストを送信してからレスポンスを受信するまでの時間が長くなると、ユーザは、処理を中断する操作をことが考えられる。例えば、ユーザは、上記の時間が長いと感じた場合、処理を中断する操作を行うことがある。
図5は、レスポンス時間とアクセス時間との関係の一例を示す。図5の例において、情報処理システム1がクライアント2からリクエストに基づいて、アプリケーションを開始した時刻をアプリ開始時刻とする。
アプリサーバ4とDBサーバ5との間のコネクションが確立した時刻をコネクション開始時刻とする。また、クライアント2が処理を中断する操作を受け付けた時刻を処理中断時刻とする。
処理中断時刻は、クライアント2が受け付ける操作である。そこで、解析処理装置7の推定部14は、処理中断時刻を推定する。また、操作開始時刻からコネクション開始時刻までの時間を他の処理時間とする。他の処理時間は、例えば、Webサーバ3やアプリサーバ4が行う処理時間である。
レスポンス時間のうちアクセス時間が占める割合が大きくなると、レスポンス時間が長くなった原因は、DBサーバ5に性能低下が生じていることに起因していることが考えられる。
実施形態において、オンライン業務アプリケーションの場合、SQLトレースを保存対象記憶部25に保存するか否かは、時間閾値を基準として判定される。時間閾値は、演算部12がアクセス時間に対して統計処理を行うことにより得られる。
レスポンス時間のうちアクセス時間が占める割合が小さい場合、レスポンス時間が長くなった原因は、DBサーバ5に性能低下が生じていることに起因している可能性は低い。従って、レスポンス時間のうちアクセス時間が占める割合が所定の割合(例えば、50%)未満の場合、該アクセス時間は、統計処理から除外される。
一方、レスポンス時間のうちアクセス時間が占める割合が大きい場合、レスポンス時間が長くなった原因は、DBサーバ5に性能低下が生じていることに起因している可能性がある。従って、レスポンス時間のうちアクセス時間が占める割合が所定の割合以上の場合、該アクセス時間は、統計処理の対象(サンプル)になる。
次に、図6および図7を参照して、処理の中断について説明する。図6は、クライアント2の画面部30に表示される画面例を示す。図6の例において、アプリケーションは、クライアント2が実行するブラウザで動作するものとする。アプリケーションの動作例は、この例には限定されない。
図6の画面例には、ブラウザ終了ボタン30Aが含まれる。また、画面部30には、マウスポインタ30Pが含まれる。マウスポインタ30Pは、不図示のマウスに対する操作を反映する。
例えば、ユーザがマウスを用いて、ブラウザ終了ボタン30Aを押下する操作を行ったとする。クライアント2は、この操作を受け付けて、ブラウザを終了する。ブラウザが終了すると、ブラウザで動作していたアプリケーションも強制終了する。これにより、処理が中断する。
図7は、クライアント2の画面部30に表示される他の画面例を示す。図7の画面例において、アプリケーションは、情報処理システム1と連携しているものとする。図7の画面例には、中止ボタン30Bが含まれる。
例えば、ユーザがマウスを用いて、中止ボタン30Bを押下する操作を行ったとする。該操作が行われると、アプリケーションは中断する。アプリケーションは、情報処理システム1と連携しているため、アプリケーションの中断操作を情報処理システム1は認識する。
図6の画面例の場合、情報処理システム1は、クライアント2のブラウザが閉じられた時刻を認識しない。つまり、解析処理装置7は、コネクション中断の操作時刻を認識しない。なお、図6において、コネクション開始時刻は、SQL処理の開始時刻としてもよい。
図8(A)は、1つのセッションにおける全セッション時間の途中でコネクション中断の操作が行われた例を示す。この場合、SQL処理が実行中に、該アプリケーション処理が中断されたことが考えられる。
クライアント2のブラウザが閉じられた時刻を、解析処理装置7は認識しない。そこで、解析処理装置7の推定部14は、中断を行ったユーザと同じユーザが情報処理システム1に再ログインした時刻を、コネクション中断の操作時刻と推定する。
Webサーバ3は、ユーザのログインを認識するため、解析処理装置7は、同一ユーザが再ログインした時刻を認識することができる。推定部14は、セッションが終了するまでに、同一ユーザによる再ログインがあった場合、再ログインした時刻をコネクション中断の時刻と推定する。
例えば、ユーザがレスポンス時間の遅さに起因して、クライアント2のブラウザを閉じる操作を行った場合、該ユーザは、すぐに、ブラウザを再起動してアプリケーションを再開する操作を行うことが考えられる。
図8(B)は、1つのセッションが終了した後に、情報処理システム1が、同一ユーザによる再ログインを認識した場合の例を示す。この場合、再ログインによるコネクション開始時刻は、全セッション時間の終了時刻よりも後になる。
図8(B)の例の場合、コネクション中断の操作時刻と再ログインによるコネクション開始時刻との間の時間が長いため、推定部14は、再ログインした時刻をコネクション中断の時刻と推定しない。この場合、同一ユーザによる再ログインの時刻は、統計処理の対象から除外される。
図9(A)は、図8(A)に対応するアクセスログおよびアプリログの一例を示す。アプリログは、アプリサーバ4のアプリログ記憶部4Aに記憶される。システムログは、アプリサーバ4のシステムログ記憶部4Bに記憶される。
この例において、ユーザ「user1」のログインによりセッション「AAA」が確立される。その後、このセッションが終了する前に、再び同一ユーザ「user1」のログインによりセッション「BBB」が確立される。
この場合、コネクション中断の操作が行われてから、短時間で、再ログインの操作が行われたことをWebサーバ3は認識する。解析処理装置7の推定部14は、再ログインによるコネクション開始時刻をコネクション中断の操作時刻と推定する。
Webサーバ3は、アクセスログに基づいて、セッション「BBB」が確立された後、セッション「AAA」がエラー(エラーコネクション)であることを認識する。
図9(B)は、図8(B)対応するWebサーバ3のアクセスログおよびアプリサーバ4のアプリログの一例を示す。この例において、ユーザ「user1」のログインによりセッション「AAA」が確立されて、このセッションが終了した後に、再び同一ユーザ「user1」のログインによりセッション「BBB」が確立される。
この場合、コネクション中断の操作が行われてから、再ログインの操作が行われるまでの時間が長いことから、解析処理装置7の推定部14は、再ログインによるコネクション開始時刻をコネクション中断の操作時刻と推定しない。従って、同一ユーザによる再ログインの時刻は、統計処理の対象から除外される。
演算部12は、図8(A)および図9(A)の場合、コネクションが確立されてから再ログインによるコネクション開始時刻までの時間をアクセス時間として算出する。一方、図8(B)および図9(B)の場合、アクセス時間は算出されない。
図10は、アプリケーションの画面に中止ボタン30Bが含まれている場合におけるアプリログおよびシステムログの一例を示す。中止ボタン30Bが押下されると、コネクションが強制切断されたことをアプリサーバ4が認識する。システムログには、コネクションが強制切断されたことを示す情報が記録される。
推定部14は、コネクションが強制切断された時刻をコネクション中断時刻と推定する。アプリサーバ4は、中止ボタン30Bの押下を認識するため、コネクションが強制切断された時刻はコネクション中断時刻とほぼ同じ時刻である。
演算部12は、アプリサーバのアプリログのうちコネクションが開始された時刻から、コネクション中断時刻までの時間をアクセス時間として算出する。
以上のように算出されたアクセス時間は、コネクションIDごとに、アクセス時間記憶部21に記憶される。演算部12は、統計処理の対象となるアクセス時間をアクセス時間記憶部21から取得して、取得されたアクセス時間に対して統計処理を行う。
実施形態では、演算部12は、取得されたアクセス時間の平均値および標準偏差を算出する。また、演算部12は、平均値を基準として標準偏差の範囲内にあるアクセス時間の平均値を算出し、算出された平均値に所定の係数を乗じた値を時間閾値とする。係数は、任意の値(例えば、0.8)であってよい。
判定部15は、演算部12により算出されたアクセス時間を時間閾値と比較し、アクセス時間が時間閾値以上の場合、SQLトレースを保存対象記憶部25に記憶すると判定する。この場合、記憶制御部16は、SQLトレースを保存対象記憶部25に保存する。
オンライン業務アプリケーションにおいてアクセス時間が時間閾値を超えている場合、DBサーバ5に性能問題が生じている可能性があるため、後の解析のために、SQLトレースは、保存対象記憶部25に保存される。
一方、アクセス時間が時間閾値以下の場合、SQLトレースは、保存対象記憶部25に保存されず、破棄される。これにより、SQLトレース(解析情報)を選択的に保存することができ、解析情報の効率的な保存が実現される。
<オフラインバッチ業務アプリケーションにおけるSQLトレースの選択的保存の一例>
次に、オフラインバッチ業務アプリケーションにおけるSQLトレースの選択的保存の一例について説明する。入出力部17は、SQLトレース記憶部5AからSQLトレースを取得する。演算部12は、1つのトランザクションに含まれる同一コネクションのSQL処理により処理されたレコード数を合計し、SQL処理の処理時間を合計する。
演算部12は、SQL処理の合計レコード数を合計処理時間で除算して、処理速度を算出する。上述したように、SQL処理は、SQL文により実現される。図11は、SQL文の一例を示す。
例えば、SQL処理が「SELECT」であれば、SQLトレースのうち「record number」からレコード数を抽出する。SQL文によって、レコード数の抽出箇所が異なる。SQL処理は、図11の例には限定されない。
図12は、SQL処理が「SELECT」の場合のレコード数および処理時間の一例を示す。図12の例に示すように、入出力部17がDBサーバ5から入力するSQLトレースは、実行計画を示すアクセスプランおよび性能情報を含む。
主制御部11は、アクセスプランの「Start time」と同じ時刻が記録されている性能情報のうち、「Total Time」の箇所から処理時間を抽出し、上記の「record number」からレコード数を抽出する。
図13は、1つのトランザクションについて、実行されたSQL処理を時系列で示す表である。破線で囲まれているコネクションIDは、全て同一のコネクションIDである。演算部12は、同一のコネクションIDに対応する処理時間およびレコード数を合計する。また、演算部12は、合計レコード数を合計処理時間で演算して、処理速度を算出する。
以上のように算出された処理速度は、コネクションIDごとに、処理速度記憶部22に記憶される。演算部12は、記憶された処理速度をアクセス時間記憶部21から取得して、取得された処理速度に対して統計処理を行う。
実施形態では、演算部12は、取得された処理速度の平均値および標準偏差を算出する。また、演算部12は、平均値を基準として標準偏差の範囲内にある処理速度の平均値を算出し、算出された平均値に所定の係数を乗じた値を速度閾値とする。係数は、任意の値(例えば、0.8)であってよい。
判定部15は、演算部12により算出された処理速度を速度閾値と比較し、処理速度が速度閾値より低い場合、SQLトレースを保存対象記憶部25に記憶すると判定する。この場合、記憶制御部16は、SQLトレースを保存対象記憶部25に保存する。
バッチ業務アプリケーションにおいて、処理速度が速度閾値より低い場合、DBサーバ5に性能問題が生じている可能性が高いため、後の解析のために、SQLトレースは、保存対象記憶部25に保存される。
一方、処理速度が速度閾値以上の場合、SQLトレースは、保存対象記憶部25に保存されない。これにより、SQLトレース(解析情報)を選択的に保存することができ、解析情報の効率的な保存が実現される。
<オンラインバッチ業務アプリケーションにおけるSQLトレースの選択的保存の一例>
次に、オンラインバッチ業務アプリケーションにおけるSQLトレースの選択的保存の一例について説明する。
オンラインバッチ業務アプリケーションの場合、上述したオフラインバッチ業務アプリケーションの判定方法だけでなく、該オンラインバッチ業務アプリケーションと重複した時間帯に動作している他のオンライン業務アプリケーションに対する影響も加味して、SQLトレース保存要否が判定される。
判定部15により処理速度が速度閾値以上であると判定された場合、オンラインバッチ業務アプリケーションは正常に動作していると判定される。ただし、オンラインバッチ業務アプリケーションの場合、重複した時間帯に動作している他のオンライン業務アプリケーションの動作に影響を与える可能性がある。この場合、SQLトレースは、保存対象記憶部25に保存される。
オンラインバッチ業務アプリケーションが他のオンライン業務アプリケーションに影響を与えるか否かは、以下の3つの条件に基づいて判定される。第1条件は「重複した時間帯であるか」であり、第2条件は「同じデータベース資源に対するアクセスであるか」であり、第3条件は「待ちが発生しているか」である。
まず、第1条件について説明する。入出力部17は、SQLトレース記憶部5Aからオンライン業務アプリケーションのSQLトレースおよびオンラインバッチ業務アプリケーションのSQLトレースを取得する。
判定部15は、オンライン業務アプリケーションのSQLトレースの開始時刻(Start time)および終了時刻(End time)と、オンラインバッチ業務アプリケーションのSQLトレースの開始時刻および終了時刻とを比較する。
例えば、判定部15は、2つのアプリケーションの開始時刻から終了時刻までの時間帯のうち一部でも重複している場合、2つのアプリケーションが動作している時間帯は同じであると判定してもよい。
次に、第2条件について説明する。判定部15は、2つのアプリケーションが同じデータベース資源にアクセスするか否かを判定する。同じデータベース資源に対するアクセスであるか否かは、テーブルおよびオブジェクトに基づいて、判定されてもよい。
例えば、判定部15は、2つのアプリケーションが、同じテーブルおよび同じオブジェクトをアクセス対象としている場合に、2つのアプリケーションが同じデータベース資源にアクセスすると判定してもよい。
図14の例において、「table name」はテーブル名を示し、「dso name」はオブジェクト名を示す。判定部15は、2つのアプリケーションのSQLトレースに含まれるテーブル名が同じであり、且つオブジェクト名も同じである場合、2つのアプリケーションは同じデータベース資源にアクセスすると判定する。
次に、第3条件について説明する。第1条件および第2条件を満たしている場合であっても、オンライン業務アプリケーションに待ちが発生していなければ、判定部15は、該オンライン業務アプリケーションに影響が与えられていないと判定する。
実施形態では、待ちは、ロックによる排他待ち(図14の例で「LOCK」)、またはキャッシュアウトや入出力競合によるページのリード・ライト待ち(図14の例で「WAITING」)であるものとする。
判定部15は、オンライン業務アプリケーションのSQLトレースのうち点線で囲まれた「LOCK」および「WAITING」の値がゼロの場合に、待ちは発生していないと判定する。一方、何れか一方の値が「1」以上の場合、待ちが発生していると判定する。
以上の第1条件、第2条件および第3条件の全ての条件が満たされている場合、判定部15は、SQL処理の処理速度が速度閾値以上であっても、バッチ業務アプリケーションがオンライン業務アプリケーションに影響を与えていると判定する。
<2つの業務におけるSQLトレースの選択的保存の比較>
次に、図15の例のグラフを参照して、2つの業務(オンライン業務アプリケーションおよびバッチ業務アプリケーション)における、SQLトレースの選択的保存の一例を説明する。図15の例の2つのグラフにおいて、横軸は時間軸を示す。
図15(A)は、オンライン業務アプリケーションにおける、アクセス時間のグラフの一例を示す。アクセス時間は経時的に変化する。図15(A)における破線は、時間閾値を示す。
アクセス時間が時間閾値を超えたと判定部15が判定した場合、記憶制御部16は、DBサーバ5から取得するSQLトレースを保存対象記憶部25に保存する。図15(A)に示されるように、アクセス時間が時間閾値を越えている間は、SQLトレースが保存対象記憶部25に保存される。
一方、アクセス時間が時間閾値以下であると判定部15が判定した場合、記憶制御部16は、DBサーバ5から取得するSQLトレースを保存対象記憶部25に保存することなく、破棄する。
図15(A)に示されるように、アクセス時間が時間閾値以下の間は、SQLトレースが保存対象記憶部25に保存されない。解析処理装置7は、DBサーバ5から定期的にSQLトレースを取得しているが、アクセス時間が時間閾値以下の間は、取得されたSQLトレースは破棄される。
図15(A)において、点線の楕円で示される時間帯のSQLトレースが保存対象記憶部25に記憶される。つまり、アクセス時間が時間閾値を超えた場合にのみ、SQLトレースが保存対象記憶部25に記憶される。
図15(B)は、バッチ業務アプリケーションにおける、処理速度のグラフの一例を示す。処理速度も経時的に変化する。図15(B)における破線は、速度閾値を示す。なお、図15(B)のバッチ業務アプリケーションは、オフラインのバッチ業務のアプリケーションであることを想定する。バッチ業務は、バッチ業務時間帯に行われる。
処理速度が速度閾値より低くなったと判定部15が判定した場合、記憶制御部16は、DBサーバ5にSQLトレースを保存対象記憶部25に保存する。処理速度が速度閾値より低い間は、SQLトレースが保存対象記憶部25に保存される。
一方、処理速度が速度閾値以上であると判定部15が判定した場合、記憶制御部16は、DBサーバ5から取得するSQLトレースを保存対象記憶部25に保存することなく、破棄する。
図15(B)に示されるように、処理速度が速度閾値以上の間は、SQLトレースが保存対象記憶部25に保存されない。この場合、上述したように、取得されたSQLトレースは破棄される。
従って、オンライン業務アプリケーションの場合も、バッチ業務アプリケーションの場合も、SQLトレースを保存する対象となる時間帯は全時間帯のうち一部の時間帯になるため、保存対象記憶部25に記憶されるSQLトレースの情報が少なくなる。このため、SQLトレースが選択的に保存され、効率的なSQLトレースの保存が図られる。
オンライン業務アプリケーションの場合、処理の種別は逐次処理になる。逐次処理の場合、DBサーバ5のアクセス時間を指標として、SQLトレースの保存要否が判定されることが好ましい。上述した例では、保存対象の情報はSQLトレースであったが、保存対象の情報はSQLトレース以外であってもよい。
例えば、情報処理システム1のうち、何らかの装置や機能に性能低下が生じた場合、装置や機能の解析情報(例えば、ログ等)を保存して、保存された解析情報に基づいて、性能低下の原因が解析される。
処理の種別が逐次処理の場合、クライアント2が情報処理システム1にリクエストを送信してから、レスポンスを受信するまでのレスポンス時間に基づいて、解析情報の保存要否が判定されることが好ましい。つまり、逐次処理の場合、解析情報の保存要否の指標は、レスポンス時間になる。
SQLトレースの場合、該SQLトレースの保存要否は、アクセス時間に基づいて判定される。アクセス時間はレスポンス時間に含まれるため、逐次処理の場合、レスポンス時間に基づいて、SQLトレースの保存要否が判定されることになる。
一方、処理の種別が一括処理の場合、処理速度に基づいて、解析情報の保存要否が判定されることが好ましい。つまり、一括処理の場合、解析情報の保存要否の指標は、処理速度になる。
従って、実施形態の解析処理装置7は、処理の種別が、逐次処理であるか、または一括処理であるかに応じて、異なる指標により、解析情報の保存要否を判定する。これにより、処理の種別に応じて、解析情報の保存要否を適切に判定することができ、解析情報が効率的に保存される。
図16は、バッチ業務アプリケーションにおける、アクセス時間および処理時間のグラフの一例を示す。図16の例のうち、棒グラフは、アクセス時間を示し、折れ線グラフは、処理速度を示す。
バッチ業務アプリケーション(一括処理)の場合、SQL処理により処理される情報量のばらつきが大きい。このため、処理時間のばらつきも大きくなる。従って、一括処理の場合、SQLトレースの保存要否は、処理速度を指標として判定されることが好ましい。
図16の例において、アクセス時間に基づいてSQLトレースの保存要否が判定されると、アクセス時間が閾値を超える時間が長くなる。このため、保存対象となるSQLトレースの情報量が多くなる。
一方、図16の例で、バッチ業務アプリケーションに応じた適切な指標である処理速度によりSQLトレースの保存要否が判定されると、処理速度が閾値より低い時間は短くなる。このため、保存対象となるSQLトレースの情報量が少なくなり、SQLトレースの効率的な保存が実現される。
次に、図17の例を参照して、オンライン業務アプリケーションにおけるアクセス時間のグラフの一例について説明する。図17の例のグラフには、2つの閾値(閾値Aおよび閾値B)がある。棒グラフは、アクセス時間を示す。
閾値Aは、アクセス時間の全体の平均値である。閾値Bは、クライアント2による処理中断操作に基づくコネクション中断時刻を反映したアクセス時間に統計処理を行った閾値である。閾値Aおよび閾値Bは、時間閾値である。
アクセス時間の全体の平均値である閾値Aよりも、コネクション中断時刻を反映したアクセス時間に統計処理を行った閾値Bを基準として、SQLトレースの保存要否を判定した方が、保存対象となるSQLトレースの情報量が少なくなる。このため、より効率的な解析処理の保存が図られる。
<時間閾値の生成および更新の一例>
次に、図18を参照して、時間閾値の生成および更新について説明する。図18(A)は、アクセス時間記憶部21に記憶されるアクセス時間テーブルの一例を示す。
アクセス時間テーブルは、PIDとプロセス名とセッションIDとコネクションIDとコネクション開始時刻コネクション終了時刻とアクセス総時間と中断フラグと時間閾値サンプルとの項目を含む。
PIDは、プロセスIDを示す。プロセス名は、プロセスの名称を示す。PIDおよびプロセス名は、アプリケーションを特定する情報でもある。
時間閾値サンプルは、時間閾値を算出する際に、使用されるサンプルであり、アクセス時間である。中断フラグは、オンライン業務アプリケーションが中断されたか否か、および中断された原因を表す。
中断フラグが「0」の場合、オンライン業務アプリケーションは、中断されていないことを表す。
中断フラグが「1」の場合、中止ボタン30Bが押下されたことを原因(コネクション強制切断)として、オンライン業務アプリケーションが中断されたことを表す。中断フラグが「2」の場合、ブラウザが終了されたことを原因(エラーコネクション)として、オンライン業務アプリケーションが中断されたことを表す。
中断フラグが「2」の場合、情報処理システム1は、オンライン業務アプリケーションが中断された時刻を認識しない。この場合、上述したように、セッション終了前に、同一ユーザから再ログインがあった場合には、推定部14は、再ログインがあった時刻をコネクション中断時刻と推定する。
図18(A)において、中断フラグが「2」の場合、アクセス総時間(コネクションIDのコネクションの処理にかかる総時間)は、コネクション開始時刻からコネクション終了時刻までの時間「72秒」である。
ただし、中断フラグが「2」であるコネクションは、エラーコネクションにより、コネクションが中断されている。推定部14は、コネクション中断時刻を再ログイン時刻と推定し、演算部12は、コネクション開始時刻から再ログインの時刻までの時間「34秒」を算出する。閾値処理部13は、時間閾値サンプルである「34秒」を認識する。
中断フラグが「0」のコネクションIDの時間は、時間閾値のサンプルには採用されない。中断フラグが「1」の場合、コネクション開始時刻からコネクション終了時刻までの時間が時間閾値サンプルとなる。図18(A)の場合、時間閾値サンプルは「26秒」である。
コネクションが確立されるごとに、アクセス時間テーブルの内容が更新される。閾値処理部13は、アクセス時間テーブルの時間閾値サンプルに基づいて、時間閾値を生成し、生成した時間閾値を時間閾値記憶部23に記憶する。
閾値処理部13が、時間閾値を生成する場合、アクセス時間テーブルのうち、中断フラグが「1」または「2」の時間閾値サンプルを取得し、時間閾値サンプルに基づく統計処理を演算部12に実行させる。
演算部12は、時間閾値サンプルの平均値AVGおよび標準偏差σを算出する。図18(B)の時間閾値サンプルの場合、平均値AVGは、「AVG=37.8」であり、標準偏差σは、「σ=17.89」である。
演算部12は、「AVG−σ」から「AVG+σ」までの範囲の時間閾値サンプルを対象(図18(B)で楕円の点線で囲まれた時間閾値サンプル)として、平均値を算出する。この場合、平均値は「30秒」になる。閾値処理部13は、この平均値を時間閾値として、時間閾値記憶部23に記憶する。
従って、コネクションが確立されるごとに、閾値処理部13は、時間閾値サンプルに対して行われた統計処理の結果を時間閾値とすることで、時間閾値が自動的に生成され、且つ時間閾値が自動的に更新される。
<速度閾値の生成および更新の一例>
次に、図19を参照して、速度閾値の生成および更新について説明する。図19(A)は、処理速度記憶部22に記憶される処理速度テーブルの一例を示す。
処理速度テーブルは、PIDとプロセス名とコネクションIDとトランザクション開始時刻とトランザクション終了時刻と処理時間合計と処理レコード数合計と速度閾値サンプルとの項目を含む。
速度閾値サンプルは、速度閾値を算出する際に、使用されるサンプルである。速度閾値サンプルは、処理レコード数合計を処理時間合計で除算した値である。
コネクションが確立されるごとに、処理速度テーブルの内容が更新される。閾値処理部13は、処理速度テーブルの速度閾値サンプルに基づいて、速度閾値を生成し、生成した速度閾値を速度閾値記憶部24に記憶する。
また、処理速度テーブルに変更があった場合には、閾値処理部13は、速度閾値記憶部24に記憶されている速度閾値を更新する。閾値処理部13が、速度閾値を生成する場合、速度閾値サンプルに基づく統計処理を演算部12に実行させる。
演算部12は、速度閾値サンプルの平均値AVGおよび標準偏差σを算出する。図18(B)の時間閾値サンプルの場合、平均値AVGは、「AVG=15.032」であり、標準偏差σは、「σ=2.507」である。
演算部12は、「AVG−σ」から「AVG+σ」までの範囲の速度閾値サンプルを対象(図18(B)で楕円の点線で囲まれた速度閾値サンプル)として、平均値を算出する。この場合、平均値は14.607秒になる。
演算部12は、算出した平均値に所定の係数(例えば、0.8)を乗じる。この場合、算出した平均値「14.607秒」に「0.8」を乗じると、「11.686秒」が算出される。閾値処理部13は、この値を速度閾値とする。
係数は、「1.0」未満であれば、任意の値であってよい。この係数が乗じられることにより、速度閾値は、上述した平均値よりも低くなる。これにより、SQLトレースの保存要否を判定するための速度閾値が低くなるため、算出された平均値よりも、余裕を持って、SQLトレースの保存要否の判定を行うことができる。
<実施形態の全体的な処理の流れを示すフローチャートの一例>
次に、実施形態の処理の流れについて、フローチャートを参照して、説明する。図20は、全体的な処理の流れの一例を示すフローチャートである。最初に、アプリケーションの種別の特定が行われる(ステップS1)。
次に、オンライン業務アプリケーションのアクセス時間および時間閾値の算出処理が行われる(ステップS2)。また、バッチ業務アプリケーションの処理速度および速度閾値の算出処理が行われる(ステップS3)。
以下、ステップS2の処理を第1の算出処理と称することもあり、ステップS3の処理を第2の算出処理と称することもある。
次に、オンライン業務アプリケーションのSQLトレースの記憶処理が行われる(ステップS4)。また、バッチ業務アプリケーションのSQLトレースの記憶処理が行われる(ステップS5)。
以下、ステップS4の処理を第1の記憶処理と称することもあり、ステップS5の処理を第2の記憶処理と称することもある。
オンライン業務アプリケーションの場合、クライアント2は、情報処理システム1のDBサーバ5に所定のSQL処理を実行させるリクエストを発行する。一方、バッチ業務アプリケーションの場合、情報処理システム1の内部で、DBサーバ5に所定のSQL処理を実行させるリクエストを発行する。
解析処理装置7は、リクエストの発行元のInternet Protocol(IP)アドレスが情報処理システム1の外部であるか否かを判定する(ステップS11)。
リクエスト発行元のIPアドレスが情報処理システム1の外部の場合(ステップS11でYES)、判定部15は、該リクエストは、外部のオンライン業務アプリケーションからのリクエストであると判定する。この場合、判定部15は、アプリケーション種別がオンライン業務アプリケーションであると判定する(ステップS12)。
一方、リクエスト発行元のIPアドレスが情報処理システム1の内部の場合(ステップS11でNO)、判定部15は、該リクエストは、情報処理システム1の内部からのリクエストであると判定する。この場合、判定部15は、アプリケーション種別がバッチ業務アプリケーションであると判定する(ステップS13)。
<第1の算出処理のフローチャートの一例>
次に、図22および図23を参照して、第1の算出処理について説明する。主制御部11は、アプリサーバ4のアプリログ記憶部4Aからアプリログを取得し、コネクションIDに基づいて、コネクション開始時刻およびコネクション終了時刻を認識する。
演算部12は、コネクション開始時刻からコネクション終了時刻までの時間をアクセス時間として算出する(ステップS21)。算出されたアクセス時間は、コネクションIDごとに、アクセス時間記憶部21に記憶される(ステップS22)。
主制御部11は、オンライン業務アプリケーションのセッションIDに基づいて、アプリログから、アプリケーションにログインしたユーザ名およびアプリ開始時刻を取得する(ステップS23)。
アプリログには、同一のユーザ名によるログインの情報が記録されている場合がある。主制御部11は、アプリログから、同一ユーザ名の再ログインが記録されているか否かを判定する(ステップS24)。
アプリログに、同一ユーザ名による再ログインの記録がある場合(ステップS24でYES)、主制御部11は、アプリログから、再ログインが行われた時刻を取得する(ステップS25)。アプリログに、同一ユーザ名による再ログインの記録がない場合(ステップS24でNO)、ステップS25の処理は行われない。
判定部15は、オンライン業務アプリケーションの中断操作が行われたか否かを判定する(ステップS26)。
例えば、システムログ記憶部4Bに記憶されているシステムログに、アプリログに記録されているコネクションIDと同一のコネクションIDにエラーコネクションやコネクション強制切断のメッセージが記録されている場合がある。この場合、判定部15は、オンライン業務アプリケーションの中断操作が行われたと判定する。
また、アクセスログ記憶部3Aに記憶されているアクセスログに、アプリログに記録されているセッションIDと同一のセッションIDにエラーコネクションが記録されている場合がある。この場合、判定部15は、オンライン業務アプリケーションの中断操作が行われたと判定する。
オンライン業務アプリケーションの中断操作が行われたと判定部15が判定した場合(ステップS26でYES)、処理は「A」に進む。オンライン業務アプリケーションの中断操作が行われていないと判定部15が判定した場合(ステップS26でNO)、処理は「B」に進む。
「A」以降の処理について、図23のフローチャートを参照して、説明する。判定部15は、オンライン業務アプリケーションの中断操作が行われた原因がエラーコネクションであるか否かを判定する(ステップS27)。
中断の原因が強制切断の場合(ステップS27でNO)、アプリ中断時刻はコネクション終了時刻に設定される(ステップS28)。中断の原因がエラーコネクションの場合(ステップS28でYES)、アプリ中断時刻は上記の再ログインの時刻に設定される(ステップS29)。
演算部12は、アプリ中断時刻からコネクション開始時刻までの時間をアクセス時間として算出する(ステップS30)。ステップS27でYESの場合、アプリ中断時刻は、再ログイン時刻になり、ステップS27でNOの場合、アプリ中断時刻は、コネクション終了時刻になる。
演算部12は、アプリ開始時刻からアプリ中断時刻までの時間をレスポンス時間として算出する(ステップS31)。そして、判定部15は、レスポンス時間に占めるアクセス時間の割合が所定割合(例えば、50%)以上であるか否かを判定する(ステップS32)。
実施形態では、レスポンス時間に占めるアクセス時間の割合が大きい場合、DBサーバ5に性能低下が生じている可能性があると判定される。一方、レスポンス時間に占めるアクセス時間の割合が所定割合未満である場合(ステップS32でNO)、処理は「B」に進む。
判定部15は、同一ユーザによる再ログインがあったことがアクセスログに記録されている場合、再ログイン時刻がコネクション終了時刻より前であるか否かを判定する(ステップS33)。
再ログイン時刻がコネクション終了時刻より前である場合(ステップS33でYES)、閾値処理部13は、コネクション開始時刻からコネクション中断時刻までのアクセス時間を時間閾値サンプルとして時間閾値記憶部23に記憶する(ステップS34)。
そして、演算部12は、時間閾値記憶部23に記憶されている時間閾値サンプルに対して統計処理を行い、時間閾値を算出する。閾値処理部13は、算出された時間閾値を時間閾値記憶部23に記憶する(ステップS35)。
時間閾値記憶部23に時間閾値が記憶されている場合、算出された時間閾値を時間閾値記憶部23に記憶する。時間閾値記憶部23に時間閾値が記憶されている場合、該時間閾値を、算出された時間閾値に更新する。
そして、第1の算出処理が終了する。ステップS26でNOの場合、処理は「B」に進み、第1の算出処理が終了する。この場合、ステップS27乃至ステップS35の処理は行われない。
ステップS32でNOの場合、処理は「B」に進み、第1の算出処理が終了する。この場合、ステップS33乃至ステップS35の処理は行われない。ステップS33でNOの場合、ステップS34およびステップS35の処理は行われず、第1の算出処理が終了する。
<第2の算出処理のフローチャートの一例>
次に、第2の算出処理の一例について、図24のフローチャートを参照して、説明する。主制御部11は、SQLトレースのアクセスプランから、トランザクションの開始時刻および終了時刻を取得する(ステップS41)。
主制御部11は、SQLトレースのアクセスプランに基づいて、コネクションIDで特定されるコネクションの最初のSQL処理が実行された時刻をトランザクションの開始時刻と認識する。
また、主制御部11は、SQLトレースのアクセスプランに基づいて、上記コネクションIDと同一のコネクションIDのコネクションの「COMMIT」または「ROLLBACK」のSQL処理が実行された時刻をトランザクションの終了時刻と認識する。
主制御部11は、上記のコネクションIDのコネクションの開始時刻から終了時刻までの範囲内で、各SQL処理の処理時間およびレコード数を取得する(ステップS42)。
演算部12は、取得された各SQL処理の処理時間を合計して、合計処理時間を算出する(ステップS43)。また、演算部12は、取得された各SQL処理のレコード数を合計して、合計レコード数を算出する(ステップS44)。
演算部12は、合計レコード数を合計処理時間で除算して、処理速度を算出する(ステップS45)。閾値処理部13は、算出された処理速度を処理速度サンプルとして、コネクションIDごとに、処理速度記憶部22に記憶する(ステップS45)。
演算部12は、処理速度記憶部22に記憶された処理速度サンプルに対して統計処理を行い、速度閾値を算出する(ステップS47)。閾値処理部13は、算出された速度閾値を速度閾値記憶部24に記憶する(ステップS48)。既に、速度閾値記憶部24に速度閾値が記憶されている場合には、閾値処理部13は、速度閾値の更新を行う。
<第1の記憶処理のフローチャートの一例>
次に、第1の記憶処理の一例について、図25のフローチャートを参照して、説明する。判定部15は、アクセス時間記憶部21に記憶されているアクセス時間テーブルから、アプリケーションごとのアクセス時間を抽出する(ステップS51)。
判定部15は、抽出されたアクセス時間が時間閾値を越えているか否かを判定する(ステップS52)。抽出されたアクセス時間が時間閾値を越えている場合(ステップS52でYES)、記憶制御部16は、SQLトレースのうち、以下の2つの条件を満たすSQL処理のトレース情報を抽出する(ステップS53)。
1つ目の条件は、SQL処理の開始時刻から終了時刻までの時間が、アプリケーション(オンライン業務アプリケーション)の開始時刻から終了時刻までの範囲内である、という条件である。
2つ目の条件は、上記のオンイラン業務アプリケーションのコネクションIDと同一のコネクションIDである、という条件である。
記憶制御部16は、以上の2つの条件を満たすSQL処理のトレース情報を保存対象記憶部25に記憶する(ステップS54)。一方、ステップS52でNOの場合、ステップS53およびステップS54の処理は行われない。
<第2の記憶処理のフローチャートの一例>
次に、第2の記憶処理の一例について、図26のフローチャートを参照して、説明する。判定部15は、処理速度記憶部22に記憶されている処理速度テーブルから、アプリケーションごとの処理速度を抽出する(ステップS61)。
判定部15は、抽出されたアクセス時間が速度閾値を下回ったか否かを判定する(ステップS62)。抽出された処理速度が速度閾値以上の場合(ステップS62でNO)、記憶制御部16は、SQLトレースのうち、以下の3つの条件を満たすSQL処理のトレース情報を抽出する(ステップS63)。
1つ目の条件は、SQL処理の開始時刻から終了時刻までの時間が、トランザクションの開始時刻から終了時刻までの範囲内である、という条件である。
2つ目の条件は、重複した時間帯の他のオンライン業務アプリケーションに待ちが発生しているという条件である。上述した例の場合、他のオンライン業務アプリケーションの重複した時間帯のSQLトレースに「WAITING」または「LOCK」のうち何れかの値が「1」以上である、という条件である。
3つ目の条件は、上記の他のオンライン業務アプリケーションとバッチ業務アプリケーションとで、アクセスするデータベース資源が同一である、という条件である。上述した例の場合、両者のSQLトレースが、同じテーブル名および同じオブジェクト名を示している場合、アクセスするデータベース資源が同一であることを示す。
以上、3つの条件が満たされている場合、バッチ業務アプリケーションが、他のオンライン業務アプリケーションに影響を与えている可能性がある。判定部15は、上記の3つの条件が満たされているか否かを判定する(ステップS64)。
上記3つの条件が満たされている場合(ステップS64でYES)、記憶制御部16は、SQLトレースを保存対象記憶部25に記憶する(ステップS65)。バッチ業務アプリケーションが他のオンライン業務アプリケーションに影響を与えている可能性があるためである。
一方、上記3つの条件の何れかが満たされていない場合(ステップS64でNO)、記憶制御部16は、SQLトレースを保存対象記憶部25に記憶しない。つまり、ステップS64でNOの場合、ステップS65の処理は行われない。
ステップS62でYESの場合、処理速度が速度閾値を下回ったため、処理はステップS65に移り、記憶制御部16は、SQLトレースを保存対象記憶部25に記憶する。
<解析処理装置のハードウェア構成の一例>
次に、図27の例を参照して、解析処理装置7のハードウェア構成の一例を説明する。図27の例に示すように、バス100に対して、プロセッサ111とRAM112とROM113と補助記憶装置114と媒体接続部115と通信インタフェース116と入出力インタフェース117とが接続されている。図12において、インタフェースは「IF」と略して示されている。
プロセッサ111は任意の処理回路である。プロセッサ111はRAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うプログラムを適用してもよい。ROM113はRAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。
補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置114に適用してもよい。媒体接続部115は、可搬型記録媒体119と接続可能に設けられている。通信インタフェース116は、外部との間で通信を行うインタフェースである。
可搬型記録媒体119としては、可搬型のメモリや光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等)を適用してもよい。この可搬型記録媒体119に実施形態の処理を行うプログラムが記録されていてもよい。
解析処理装置7のうち、処理部10は、与えられたプログラムをプロセッサ111が実行することにより実現されてもよい。記憶部20は、RAM112や補助記憶装置114等により実現されてもよい。
RAM112、ROM113、補助記憶装置114および可搬型記録媒体119は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<クライアントのハードウェア構成の一例>
次に、図28の例を参照して、クライアント2のハードウェア構成の一例を説明する。図28の例に示すように、バス200に対して、プロセッサ211とRAM212とROM213と補助記憶装置214と媒体接続部215と通信インタフェース216と入出力インタフェース217とが接続されている。
プロセッサ211は任意の処理回路である。プロセッサ211はRAM212に展開されたプログラムを実行する。ROM213はRAM212に展開されるプログラムを記憶する不揮発性の記憶装置である。
補助記憶装置214は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置214に適用してもよい。媒体接続部215は、可搬型記録媒体219と接続可能に設けられている。
通信インタフェース216は、外部との間で通信を行うインタフェースである。入出力インタフェース217は、ディスプレイ217Aやマウス217Bに接続される。例えば、画面部30はディスプレイ217Aにより実現されてもよい。
可搬型記録媒体219としては、可搬型のメモリや光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等)を適用してもよい。この可搬型記録媒体119に実施形態の処理を行うプログラムが記録されていてもよい。
RAM212、ROM213、補助記憶装置214および可搬型記録媒体219は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<その他>
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。