(57)【要約】      （修正有）【課題】トレース採取のオーバヘッドを最小にしてボトルネックを迅速に特定可能とする。【解決手段】ウェブサーバがクライアント２４から要求電文を受信した際に、トレース条件埋込部２８は、リレーコードにトレース採取条件を埋め込んで次のアプリケーションに受け渡す。トレース採取部３０−１〜３０−３は、要求電文の受信時にリレーコードのトレース採取条件に基づきトレース採取の有無を判別して処理する。トレース採取条件にはトレース範囲をアプリケーション単位に指示する機能ＩＤと、通過したアプリケーションを記録するリレーＩＤが含まれる。トレース条件埋込部２８は、更に、スイッチ情報によるトレース採取有りの指示状態で要求電文の受信回数に対しトレースを採取する割合を指示する間欠スイッチ情報を含み、間欠スイッチ情報の割合に従ってリレーコードにスイッチオンとなるトレース採取条件を埋め込む。【選択図】図１
2010118072.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが複数のアプリケーションを連係処理することにより電文要求を処理するアプリケーションシステムのトレース採取方法であって、
電文要求を受信したときに、トレース採取条件記憶部のトレース採取有無を指定した情報と前記電文要求の識別子を該電文要求に付加し、
前記情報及び前記識別子が付加された電文要求を受信したときに、該情報に基づき、アプリケーション実行時に前記識別子を含めたトレース情報を記録することを前記コンピュータが実行することを特徴とするトレース処理方法。
【請求項２】
請求項１のトレース処理方法に於いて、
前記トレース採取条件記憶部は、トレースを採取する範囲をアプリケーション単位に指示する機能ＩＤを記録するリレーＩＤを付加する処理を含むことを特徴とするトレース処理方法。
【請求項３】
請求項１のトレース処理方法に於いて、
前記トレース採取条件記憶部は、スイッチ情報によるトレース採取有りの指示状態で前記電文要求の受信回数に基づいてトレースを採取する割合を指示する間欠スイッチ情報を含み、前記間欠スイッチ情報の割合に従って前記電文要求にトレース採取条件を付加することを特徴とするトレース処理方法。
【請求項４】
請求項３のトレース処理方法において、
前記間欠スイッチ情報は、電文要求のルートを識別する情報であり、該ルートを識別する情報に基づくルート毎に前記電文要求の受信回数に基づいてトレース情報を採取する割合を指示することを特徴とするトレース処理方法。
【請求項５】
コンピュータが複数のアプリケーションが連係処理することにより電文要求を処理するプログラムであって、
電文要求を受信したときに、トレース採取条件記憶部のトレース採取有無を指定した情報と前記電文要求の識別子を該電文要求に付加しするトレース条件付加ステップと、
前記情報及び前記識別子が付加された電文要求を受信したときに、該情報に基づき、アプリケーション実行時に前記識別子を含めたトレース情報を記録するトレース情報記録ステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項６】
コンピュータが複数のアプリケーションが連係処理することにより電文要求を処理するアプリケーションシステムのトレース情報処理装置であって、
電文要求を受信したときに、トレース採取有無を指定した情報と前記電文要求の識別子を該電文要求に付加するトレース条件記憶部と、
前記情報及び前記識別子が付加された電文要求を受信したときに、該情報に基づき、アプリケーション実行時に前記識別子を含めたトレース情報を記録するトレース情報記憶装置を備えたことを特徴とするトレース情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク経由でアプリケーションサービスを実現する分散型アプリケーションシステムのトレース処理方法、プログラム及び装置に関し、特に、トレースを採取してレスポンス悪化の原因となったボトルネック箇所を特定するトレース処理方法、プログラム及び装置に関する発明である。
【背景技術】
【０００２】
ネットワーク対応の分散型アプリケーションシステムは、複数のサーバが多階層で構成され、かつ、その上で動作するアプリケーションも複雑に組み合わされ、それぞれが連携して動作することにより一つのサービスが実現される。
【０００３】
このような複雑な分散型アプリケーションシステムにおいて、レスポンス悪化の原因となったボトルネック箇所を特定するには、アプリケーションの振る舞いを記録したトレース情報を時系列に並べて繋ぎ合わせるなどして調査、分析を行っている。
【０００４】
トレース情報の採取は、通常、実行されたアプリケーション（プログラムもしくはプログラム内のモジュールなども含む）の呼び出された時の入口ポイントと処理を終了するときの出口ポイントで、各ポイントを通過した時の時刻情報と共に記録され、蓄積される。
【０００５】
図１６は従来のトレース情報の採取であり、ウェブサーバ２００、アプリケーションサーバ２０２、データベースサーバ２０４、データベース２０６が階層構成で配置され、クライアントからの要求電文は、各サーバのアプリケーションの実行で処理され、データベース２０６の検索等による応答が行われる。
【０００６】
トレース情報は実行されたアプリケーションの入口と出口となるポイントＰ１〜Ｐ１２のそれぞれで採取される。ここでトランザクションレスポンスｔ１が悪化した場合には、トレース情報から得られた各サーバのトランザクションレスポンスｗ１、ｗ２、ａ１、ａ２、ｄ１、ｄ２について、正常時と比較することで、ボトルネック箇所を特定することができる。
【０００７】
また、複雑に組み合わされた各アプリケーションが、どのような呼び出し関係で連動していったかを調べるためのトレース情報の繋ぎ合わせを容易にするために、入口と出口の時間情報だけではなく、図１７に示すように、次に呼び出すアプリケーションの情報についても記録するなど、記録する情報に工夫があるものなどがある。図１７（Ａ）はトランザクションの分配の例であり、これに対応して図１７（Ｂ）のように、各アプリケーションの呼び出し階層情報を生成している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１−２７７９４０号公報
【特許文献２】特開平４−８４２３４号公報
【特許文献３】特開２００１−３１８８０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来の分散型アプリケーションシステムのトレース処理方法には、以下のような問題がある。まず従来のトレース処理方法は、オーバヘッドが大きすぎる。分散型アプリケーションシステムでトレースの対象となる各アプリケーションの入口情報と出口情報、呼び出し関係情報などの情報は、非常に膨大な量の情報となり、システムへのオーバヘッドも無視できないくらいに発生する。
【００１０】
このため、不測の事態に備えて常時トレースを収集しておくという運用は実質不可能になっており、トラブルが発生した後で、システムになるべく影響が出ない範囲でトレースを収集するなどの運用しかできないため、ボトルネックの原因追求に時間がかかる原因になっている。
【００１１】
また従来のトレース処理方法は、分散型アプリケーションシステムにおける運用が煩雑である。図１８において、分散型アプリケーションシステムを対象にトレース情報を収集する場合、トレースの有無を指示するスイッチ２０８、２１０、２１２を各サーバ２００、２０２、２０４におけるシステムや各アプリケーションごとに装備している。このためトラブルが発生した後でトレースを収集しようとなると、管理者はいくつものスイッチを入れる必要があり、かつ、どのスイッチを入れれば良いのか判断が必要になるため、非常に煩雑な運用を強いられている。
【００１２】
本発明は、トレース採取のオーバヘッドを最小にしてボトルネックを迅速に特定可能とする分散アプリケーションシステムを対象としたトレース処理方法、プログラム及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
図１は本発明の原理説明図である。本発明は、階層配置された複数のサーバ上で動作する複数のアプリケーションを有し、クライアント２４から要求電文を受信した際に、アプリケーション間でリレーコードを順番に受け渡しながら処理を実行して応答する分散型アプリケーションシステムのトレース処理方法を対象とし、
要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件をリレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込ステップと、
アプリケーションの各々に設けられ、要求電文の受信時にリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップと、を備えたことを特徴とする。
【００１４】
ここで、トレース条件埋込ステップは、トレース採取条件として、更に、トレースを採取する範囲をアプリケーション単位に指示する機能ＩＤと、通過したアプリケーションを記録するリレーＩＤを含むことを特徴とする。
【００１５】
トレース条件埋込ステップは、スイッチ情報でトレース採取有りを指示した際にユニークなリレーＩＤを生成し、トレース採取ステップは、次に呼び出すアプリケーションの識別子をリレーＩＤの後ろに繋げていく。
【００１６】
トレース条件埋込ステップは、トレース採取条件として、更に、スイッチ情報によるトレース採取有りの指示状態で要求電文の受信回数に対しトレースを採取する割合を指示する間欠スイッチ情報を含、間欠スイッチ情報の割合に従ってリレーコードにトレース採取条件を埋め込む。
【００１７】
間欠スイッチ情報は、要求電文のルートを識別し、識別したルート毎に要求電文の受信回数に対しトレースを採取する割合を指示することもできる。間欠スイッチは要求電文の受信回数に対しトレースを採取する割合を０パーセント乃至１００パーセントの範囲で指示する。
【００１８】
分析表示ステップは、トレース採取ステップにより各アプリケーションで採取されたトレース情報から、リレーＩＤに従ったルートのトレース情報を抽出して時刻順にソートし、ソート結果に基づきルートと各アプリケーションと処理の関係を生成して表示させる。
【００１９】
具体的には、分析表示ステップは、要求電文を受信してから次に引き渡すまでの処理時間を通過ポイントとなる各アプリケーションに対応して表示させる。また分析表示ステップは、入口のアプリケーションが要求電文を受信してから応答するまでの合計処理時間に対し、各アプリケーションが要求電文を受信して次に引き渡すまでの処理時間の割合を通過ポイントとなる各アプリケーションに対応して表示させても良い。
【００２０】
本発明は、クライアントの要求電文を最初に処理する第１階層のアプリケーションを備えたサーバを構成するコンピュータにより実行されるプログラムを提供する。このプログラムは、
クライアントから前記要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件を前記リレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込ステップと、
リレーコードに埋め込むトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理すると共に、他のアプリケーションから要求電文を受信した際に、要求電文のリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップと、
を実行させることを特徴とする。
【００２１】
本発明は、クライアントの要求電文を２回目以降に処理する第２階層以降のアプリケーションを備えたサーバを構成するコンピュータにより実行されるプログラムを提供する。このプログラムは、他のアプリケーションから要求電文を受信した際に、要求電文のリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップを実行させることを特徴とする。
【００２２】
本発明は、階層配置された複数のサーバ上で動作する複数のアプリケーション処理部を有し、クライアント２４から要求電文を受信した際に、アプリケーション処理部２６、３４、３６の間でリレーコードを順番に受け渡しながら処理を実行して応答する分散アプリケーションのトレース処理装置を対象とし、要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件をリレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込部２８と、アプリケーション処理部２６、３４、３６の各々に設けられ、要求電文の受信時にリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取部３０−１〜３０−３とを備えたことを特徴とする。
【００２３】
なお、本発明のプログラム及びトレース処理装置の詳細は、基本的にトレース処理方法と同じになる。
【発明の効果】
【００２４】
本発明によれば、分散型アプリケーションシステムにおいて、トレース採取によるオーバヘッドを最小化および局所化できるため、常時トレースを採取する運用が実現でき、トラブル発生時に迅速にボトルネックの特定が可能となる。
【００２５】
また、分散型アプリケーションシステムは、入り組んでいて複雑な構成であるため、どこでどのようなアプリケーションが動作しているのかなかなか分からないといった問題もある。このような問題に対しても、本発明は、アプリケーションが連動して動作する様子を、簡単に把握することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の原理説明図
【図２】本発明が適用される分散型アプリケーションシステムの説明図
【図３】本発明によるトレース処理の機能構成のブロック図
【図４】図３のウェブサーバに設けたトレース条件埋込部の機能構成のブロック図
【図５】リレーコードに埋め込むトレース採取条件及び間接スイッチ情報の説明図
【図６】本発明におけるリレーＩＤの説明図
【図７】要求電文にトレース採取条件を埋め込んだリレーコードを付加して受け渡す本発明によるトレース処理の説明図
【図８】本発明によるトレース条件埋込処理のフローチャート
【図９】本発明によるトレース採取処理のフローチャート
【図１０】本発明によるトレース情報の分析表示処理のフローチャート
【図１１】分析表示のために整理したトレース情報の説明図
【図１２】図１１の整理情報から得られた分析結果の表示例の説明図
【図１３】分析表示のために整理した他のトレース情報の説明図
【図１４】図１３の整理情報から得られた分析結果の表示例の説明図
【図１５】図１３の整理情報から得られた分析結果の他の表示例の説明図
【図１６】従来の分散型アプリケーションシステムでのトレース採取ポイントの説明図
【図１７】従来のトレース処理で採取するアプリケーションの引継ぎ関係の説明図
【図１８】従来の分散型アプリケーションシステムにおけるアプリケーション毎に必要とするトレースの有無を決めるスイッチ操作の説明図
【発明を実施するための最良の形態】
【００２７】
図２は、本発明のトレース処理が適用される分散型アプリケーションシステムの説明図である。図２において、分散型アプリケーションシステム１０は複数のサーバを階層配置している。この例にあっては、インターネット２２を介してクライアント２４からの要求電文を受けるシステムの入口側にウェブサーバ１２−１、１２−２、１２−３、１２−４を設けており、次の階層にアプリケーションサーバ１４−１、１４−２、１４−３、１４−４を設け、更に３番目の階層にデータベースサーバ１６−１、１６−２を設け、データベースサーバ１６−１、１６−２に対しデータベース１８−１、１８−２をそれぞれ接続している。
【００２８】
分散型アプリケーションシステム１０における階層配置されたウェブサーバ１２−１〜１２−４、アプリケーションサーバ１４−１〜１４−４及びデータベースサーバ１６−１、１６−２の間は、相互に入出力接続されており、データベース１８−１、１８−２の例えば検索などにおいて、階層配置されたアプリケーションを辿る複雑な処理経路を経て要求電文に対する処理を実行して応答することになる。
【００２９】
分散型アプリケーションシステム１０を構築する階層配置された複数のサーバにあっては、クライアント２４からインターネット２２を介して入口側のウェブサーバ１２−１〜１２−４で要求電文を受信した際に、アプリケーション間でリレーコードと呼ばれるキーワードを順番に受け渡しながら動作するようになる。
【００３０】
分散型アプリケーションシステム１０を構成する階層配置されたサーバに対しては管理サーバ２０が設けられる。管理サーバ２０は、入口側に位置するウェブサーバ１２−１〜１２−４に対し、クライアント２４からの要求電文に付加してアプリケーション間で受け渡すリレーコードに埋め込むトレース採取条件の設定を行う。また管理サーバ２０は必要に応じて、各サーバに蓄積されているトレース情報を収集して分析表示する処理を行う。
【００３１】
図３は、本発明によるトレース処理の機能構成のブロック図であり、図２の分散型アプリケーションシステム１０におけるクライアント２４からデータベース１８までの１系統について取り出して示している。
【００３２】
図３において、クライアント２４からの要求電文は、インターネット２２を介して入口側に位置するウェブサーバ１２で受信され、ウェブサーバ１２のアプリケーション、次のアプリケーションサーバ１４のアプリケーション、更にデータベースサーバ１６のアプリケーションの実行を経て、データベース１８のアクセスを行い、アクセス結果を、データベースサーバ１６のアプリケーション、アプリケーションサーバ１４のアプリケーション、更にウェブサーバ１２のアプリケーションを経由して、クライアント２４側に応答することになる。
【００３３】
このため、ウェブサーバ１２、アプリケーションサーバ１４及びデータベースサーバ１６のそれぞれには、アプリケーションプログラムとして機能するアプリケーション処理部２６、３４、３６が設けられている。
【００３４】
分散型アプリケーションシステム１０の入口に位置するウェブサーバ１２にはトレース条件埋込部２８が設けられている。トレース条件埋込部２８は、クライアント２４から要求電文を受信した際に、アプリケーション間で受け渡すリレーコードに管理サーバ２０の管理コンソール３８の操作で予め設定されたトレース採取条件を埋め込んで、次のアプリケーションサーバ１４のアプリケーション処理部３４に受け渡す。
【００３５】
トレース採取部３０−１、３０−２、３０−３は、リレーコードに埋め込まれるトレース採取条件に基づきトレース採取の有無を判別し、トレース指示があれば、要求電文の受信に基づくアプリケーション処理部２６、３４、３６のトランザクションの実行に伴うトレース情報を採取して、トレースファイル３２−１、３２−２、３２−３に蓄積する。トレース採取の指示がなければトレース採取は行わず、即ちトレースは無視されることになる。
【００３６】
図４は、図３のウェブサーバ１２に設けているトレース条件埋込部２８の機能構成のブロック図である。図４において、トレース条件埋込部２８には、トレース採取条件記憶部４２、間接スイッチ処理部４４、リレーＩＤ生成部４５、トレース採取条件コード保持部４６及びトレース採取条件コード埋込部４８が設けられる。
【００３７】
トレース採取条件記憶部４２には、図３の管理サーバ２０に設けた管理コンソール３８の操作によりスイッチ６６、機能ＩＤ６８及びリレーＩＤ７０がトレース採取条件として記憶される。トレース採取条件記憶部４２に記憶されたスイッチ６６はトレースのオン又はオフを指示しており、この指示により図３のアプリケーション処理部２６がクライアント２４から要求電文を受信して処理を実行した際に、トレースを採取するか採取しないかが決められる。
【００３８】
図５は、図４のトレース採取条件記憶部４２に管理コンソール３８からの指示で設定されるトレース採取条件及び間接スイッチ情報の説明図である。図５（Ａ）のトレース採取条件６４にあっては、埋込情報として、スイッチ６６、機能ＩＤ６８及びリレーＩＤ７０の３つを備えている。
【００３９】
スイッチ６６はサイズが４バイト、機能ＩＤ６８はサイズが同じく４バイト、更にリレーＩＤ７０は可変長である。スイッチ６６はトレースを採取するか採取しないかのオン、オフを指示する。スイッチ６６は図３のように第１階層のアプリケーションを実行するアプリケーション処理部２６を備えたウェブサーバ１２に対してのみトレースのオンまたはオフを設定し、トレース採取のためにウェブサーバ１２に対し一度オンしておけば、スイッチ６６を含むトレース採取条件はアプリケーション間で受け渡されるリレーコードに埋め込まれて後続する第２階層以降のアプリケーションに送られる。
【００４０】
このため後続するアプリケーション処理部３４、３６においては、管理コンソール３８側からスイッチ操作を行わなくても、リレーコードに埋設されたトレース採取条件６４のスイッチ６６の指示に基づき自動的にトレース採取が行われる。このためスイッチ６６はアプリケーション間におけるトレース採取の連動スイッチとして機能することになる。
【００４１】
機能ＩＤ６８は、特定の機能に対してのみトレースを採取するようにトレース範囲を決定する。このため要求電文の受信に伴う一連のアプリケーションのルートにおいて、特定のアプリケーションについてのみトレース採取を指定することができる。
【００４２】
リレーＩＤ７０は、トレース情報の分析時にアプリケーションの呼出関係を繋ぎ合わせるための情報であり、リレーＩＤ７０を追いかけることで、ある要求電文がどのようなアプリケーションのルートを通過したかが分析できる。リレーＩＤ７０としては、初期値としては分散型アプリケーションシステム内でユニークなＩＤ、例えばタイムスタンプにプロセスＩＤを加えたＩＤが作成され、その後はアプリケーションを通過するごとに、次に呼び出すアプリケーションの識別子を後ろに繋げていくようにする。
【００４３】
図６は、本発明のトレース処理におけるリレーＩＤの説明図であり、入口側となる第１階層にアプリケーション７４が位置し、第２階層にアプリケーション７５、７６が位置し、第３階層にアプリケーション７８、８０、８２が位置した場合である。第１階層のアプリケーション７４に対する要求電文の受信があると、図５（Ａ）のトレース採取条件を埋め込んだリレーコードが付加され、このときのリレーＩＤは分散型アプリケーションシステムにユニークなＩＤとして「１２３」を作成する。
【００４４】
続いて、第１階層のアプリケーション７４から第２階層のアプリケーション７５またはアプリケーション７６に、リレーコードを付加した要求電文が引き渡されるが、アプリケーション７５に受け渡す際には、最初のリレーＩＤ「１２３」にアプリケーション７５の識別子「ｂ１」を付加したリレーＩＤ「１２３．ｂ１」とする。またアプリケーション７６に受け渡す際にはアプリケーション７６の識別子「ｂ２」を付加したリレーＩＤ「１２３．ｂ２」とする。
【００４５】
同様に第２階層のアプリケーション７５から第３階層のアプリケーション７８に受け渡す際にはリレーＩＤは「１２３．ｂ１．ｃ１」となり、第２階層のアプリケーション７６から第３階層のアプリケーション８０に受け渡す場合にはリレーＩＤは「１２３．ｂ２．ｃ２」となる。更に第２階層のアプリケーション７６から第３階層のアプリケーション８２に受け渡す場合にはリレーＩＤは「１２３．ｂ２．ｃ３」となる。
【００４６】
このようなリレーＩＤは、各階層のアプリケーションにおいてトレース採取に伴うトレースデータと共に保存されており、トレース情報を管理サーバで収集した際にリレーＩＤを追っていくことで、ある要求電文がどのようなルートで各アプリケーションを通過したかが分析できる。
【００４７】
再び図４を参照するに、間接スイッチ処理部４４はトレース採取条件記憶部４２に記憶されたオン状態を記憶したスイッチ６６を要求電文受信カウントが得られる毎に読出し、管理コンソール３８からの指示で記憶された間接スイッチ情報に基づいて、例えば「１％スイッチ」であれば、１００回の要求電文受信カウントの内、１回はスイッチオンとし、残り９９回はスイッチオフとしてトレース採取条件コード保持部４６にスイッチ６６−１として書き込む。
【００４８】
図５（Ｂ）は間接スイッチ処理部４４に管理コンソール３８により設定される間欠スイッチ情報の説明図である。間欠スイッチ情報７２は、設定情報として間欠スイッチがセットされ、設定内容としては「ｎ％スイッチ」としてｎの値が指定される。間欠スイッチ情報７２における「ｎ％スイッチ」は、ｎの値を０〜１００％の範囲で任意に設定することができる。
【００４９】
「ｎ％スイッチ」は例えば「１％スイッチ」や「０．１％スイッチ」などが設定される。「１％スイッチ」の場合、要求電文の受信回数１００回に対し、１回の割合でスイッチオンとしたトレース採取条件をリレーコードに埋め込んで次のアプリケーションに受け渡す。
【００５０】
また「０．１％スイッチ」の場合には、要求電文の受信回数１０００回に１回の割合でスイッチオンとしたトレース採取条件をリレーコードに埋め込んで、次のアプリケーションに受け渡す。このような間欠スイッチ情報７２の設定により、要求電文に対するトレース採取の割合を少なくして分散型アプリケーションシステムにかけるオーバヘッドを最小化し、且つ通常の運用中であっても常時、トレースを採取する運用が実現できる。
【００５１】
間欠スイッチ情報７２における「ｎ％スイッチ」は、ｎの値を０〜１００％の範囲で任意に設定することができるため、「０％スイッチ」を設定した場合には、トレース採取は全く行わない運用となる。また「１００％スイッチ」を設定した場合には、全ての要求電文につきトレース情報を採取する運用となり、これは間接スイッチ処理部４４の機能をなくしたことに相当する。
【００５２】
「ｎ％スイッチ」によるトレース採取の割合は次の２つの方法とする。
（１）等間隔トレース採取
（２）ランダムトレース採取
例えば「０．５％スイッチ」を例にとると、要求電文の受信回数１０００回のうち５回につきトレーススイッチをオンとしたトレース採取を行うが、等間隔トレース採取にあっては、２００回目、４００回目、６００回目、８００回目及び１０００回目にトレース採取を行う。
【００５３】
これに対しランダムトレース採取にあっては、要求電文の受信回数１０００回に対し乱数を使用して例えば１４２回目、２６２回目、４３８回目、６２６回目及び８５４回目にトレース採取を行う。このランダムトレース採取によれば、等間隔トレース採取に比べ処理が複雑になるが、トレース情報の周期的な依存性を低減できる利点がある。
【００５４】
更に分散型アプリケーションシステムにあっては、要求電文の内容によっては異なったルートでアプリケーションを順番に実行することとなり、アプリケーションのルートが異なる場合にはルートごとに間欠スイッチ情報７２を設定することになる。ルートごとの間欠スイッチ情報の設定は、要求電文の種別によりルートが決まることから、要求電文の種別を判別して、対応する間欠スイッチ情報の割合でスイッチオンとなるトレース採取条件をリレーコードに埋め込めばよい。
【００５５】
この結果、ルートの異なる多種多様な要求電文が混在する分散型アプリケーションシステムであっても、ルートごとにトレース採取を行う割合を間接スイッチ情報により設定し、各ルートごとのオーバヘッドを最小化した状態で、通常の運用中における常時トレース採取が可能となる。
【００５６】
再び図４を参照するに、リレーＩＤ生成部４５はトレース採取条件記憶部４２に記憶されたシステムにユニークなリレーＩＤ７０に次に受け渡すアプリケーションの識別子を付加してトレース採取条件コード保持部４６にリレーＩＤ７０−１として書き込む。なお、トレース採取条件記憶部４２に記憶された機能ＩＤ６８はそのままトレース採取条件コード保持部４６に書き込む。
【００５７】
トレース採取条件コード埋込部４８は、クライアントからの要求電文を受信したアプリケーション処理部２６が処理を実行して次のアプリケーションに引き渡す際に、要求電文に付加するリレーコードを入力してトレース採取条件コード保持部４６に保持しているスイッチ６６−１、機能ＩＤ６８及びリレーＩＤ７０−１で構成されたトレース採取条件コードをリレーコードに埋め込んで出力する。
【００５８】
再び図３を参照するに、入口のウェブサーバ１２に続くアプリケーションサーバ１４及びデータベースサーバ１６にあっては、トレース採取部３０−２、３０−３とトレースファイル３２−２、３２−３が設けられており、トレースの採取は入口側のウェブサーバ１２のトレース条件埋込部２８がリレーコードに埋め込んでいるトレース採取条件を取り出し、これに基づきトレース採取を実行する。またトレース採取部３０−１は、次のアプリケーションに受け渡す際に、リレーＩＤに次のアプリケーションの識別子を付加して送ることになる。
【００５９】
図７は、図３の分散型アプリケーションシステム１０において、クライアント２４から要求電文を受信した際のトレース処理の説明図である。
【００６０】
図７において、まずウェブサーバ１２にはアプリケーションとしてコンポーネント５２が設けられ、アプリケーションサーバ１４にはアプリケーションとしてのコンポーネント５４、５６が設けられ、更にデータベースサーバ１６にはアプリケーションとしてのコンポーネント５８、６０が設けられている。
【００６１】
分散型アプリケーションシステム１０において、クライアント２４から要求電文を受け取ると、各コンポーネント５２、５４、５６、５８、６０でトランザクションが順次実行され、次のアプリケーションに要求電文を引き渡す際には、リレーコードをリレーコード６２−１〜６２−１０に示すように付加して受け渡している。
【００６２】
このようなクライアント２４からの要求電文に対し、ウェブサーバ１２、アプリケーションサーバ１４、データベースサーバ１６を経由してデータベース１８をアクセスして応答する場合のルートにおいて、コンポーネント５２、５４、５６、５８、６０のそれぞれにおける通過位置がトレース採取ポイントＰ１〜Ｐ１０となる。
【００６３】
複数のアプリケーションを繋げた処理において、本発明にあっては、クライアント２４からの要求電文を受ける入口のウェブサーバ１２のアプリケーションであるコンポーネント５２に対し、管理サーバ２０の管理コンソール３８からの指示でトレース採取のためにスレーススイッチ５０をオンしておくと、トレーススイッチ５０の指示内容が次のコンポーネント５４に要求電文に付加して受け渡すリレーコード６２−１に埋め込まれ、これによって後続するコンポーネント５４、５６、５８、６０のトレース採取を１回のスイッチ操作で指示することができる。
【００６４】
なお、トレーススイッチ５０の機能は、具体的には、図４のトレース採取条件記憶部４２におけるスイッチ６６として記憶される。また、図４のトレース採取条件記憶部４２に記憶する機能ＩＤ６８により、特定のコンポーネントのトレースを採取するようにトレース範囲を決定することで、トレース採取ポイントＰ１〜Ｐ１０のルートの中の特定のコンポーネントにおいてのみ、トレース採取を行わせることもできる。
【００６５】
またウェブサーバ１２でリレーコード６２−１にスイッチオンのトレース採取条件６４を埋め込む割合は、図４の間接スイッチ処理部４４に管理コンソール３８から図５（Ｂ）の間接スイッチ情報７２を設定しておくことで実現でき、例えば「１％スイッチ」が設定されていれば、要求電文を１００回受信したうちの１回だけ、スイッチオンとしたトレース採取条件６４をリレーコード６２−１に埋め込んで次のコンポーネント５４に引き渡すようになり、要求電文の受信に対しトレース採取の割合を１％に抑えることで、分散型アプリケーションシステムのオーバヘッドを最小化し、且つ通常の運用中においてトレース採取が実現できる。
【００６６】
図８は、本発明によるトレース条件埋込処理のフローチャートであり、図３のウェブサーバ１２に設けているトレース条件埋込部２８により実行される。図８のトレース条件埋込処理にあっては、ステップＳ１で管理コンソール３８からの指示を受けてトレース採取スイッチをオンに記憶する。トレース採取スイッチのオンは、具体的には図４のトレース条件埋込部２８のトレース採取条件記憶部４４におけるスイッチ６６にスイッチオンを書き込む。
【００６７】
次にステップＳ２で、トレース採取条件として間欠スイッチ条件によるトレース採取割合と機能ＩＤによるトレース範囲条件を記憶する。この間欠スイッチ条件と機能ＩＤも、具体的には図４のトレース条件埋込部２８の間接スイッチ処理部４４に対する間接スイッチ情報の書込みと、トレース採取条件記憶部４２の機能ＩＤ６６に対するトレース範囲条件の書込みで実現される。
【００６８】
続いてステップＳ３でクライアントからの要求電文の受信を待つ。要求電文を受信するとステップＳ４に進み、ステップＳ２で記憶した間欠スイッチ条件に基づくトレース採取か否かチェックする。例えば「０．１％スイッチ」であった場合には、カウントしている要求電文の受信回数が１００回目であった場合にはトレース採取条件が成立したと判断し、ステップＳ５に進む。
【００６９】
ステップＳ５ではリレーコードにオン状態にセットしたスイッチを埋め込む。次にステップＳ６でリレーコードに機能ＩＤとリレーＩＤを埋め込む。そしてステップＳ８で要求電文にリレーコードを付加し、ステップＳ９で次のアプリケーションに受け渡す。
【００７０】
一方、ステップＳ４で間欠スイッチ条件に基づくトレース採取でなかった場合には、ステップＳ７でリレーコードにオフ状態としたスイッチを埋め込んだ後、ステップＳ８で要求電文にリレーコードを付加し、ステップＳ９で次のアプリケーションに受け渡す。
【００７１】
図９は本発明によるトレース採取処理のフローチャートである。図８のトレース採取処理において、ステップＳ１で要求電文の受信の有無をチェックしており、要求電文を受信すると、要求電文に付加されているリレーコードの内容を確認し、リレーコードに埋め込まれているトレース採取条件の中のスイッチがオンしていれば、ステップＳ３に進み、トレースを採取する。
【００７２】
続いてステップＳ４でリレーＩＤに次のアプリケーションの識別子を付加し、ステップＳ６で次のアプリケーションに受け渡す。一方、リレーコードのトレース採取条件の中でスイッチがオフ状態にある場合には、ステップＳ５に進み、トレースを採取せず、ステップＳ６で次のアプリケーションに受け渡す。
【００７３】
なお、図３のウェブサーバ１２に設けているトレース採取部３０−１は、クライアント２４からの要求電文を受信した際には、図９のフローチャートの処理は行わず、図４のトレース採取条件記憶部４２のスイッチ６６がスイッチオンであればトレースを採取し、スイッチオフであればトレースを採取しない処理を行う。またトレース採取部３０−１はアプリケーションサーバ１４から応答電文に付加されたリレーコードを受信した際には、図９のフローチャートに従ったトレース採取処理を行うことになる。
【００７４】
図１０は本発明によるトレース情報の分析表示処理のフローチャートであり、図３に示した管理サーバ２０の分析表示部４０により実行される。図１０の分析表示処理において、オペレータなどからの指示により、ステップＳ１でサーバ側に蓄積しているトレースファイルからトレースデータを収集する。
【００７５】
次にステップＳ２で収集データについて、例えばリレーＩＤによるルートに従ったトレース採取ポイントの時間順となるように収集データを整理する。続いてステップＳ３で、整理した収集データについて要求電文単位にルート分析を行って、ルート上の各アプリケーションの処理に要した時間や時間割合などを求め、ステップＳ４で分析結果を表示する。
【００７６】
図１１は分析表示のために整理したトレース情報の一例を示した説明図である。図１１のトレース情報８４にあっては、時間情報８６、ＩＰアドレス８８、プロセスＩＤ９０、リレーＩＤ９２、採取ポイント９４、コンポーネント名９６、コンポーネント内識別情報９８及びメソッド名１００の項目で整理している。
【００７７】
図１２は図１１の整理情報から得られた分析結果の表示例の説明図である。図１２の分析結果の表示例にあっては、コンポーネント５２、５４、５６、５８、６０、データベース１８からなるルート上の通過ポイントに対し、縦軸方向に時間軸を取っており、それぞれの実行時間１０２、１０４、１０６、・・・１２２が、処理時間の長さに応じて示され、更に実行時間１０２〜１２２のそれぞれについて、測定された時間として１０ｍｓ、１０ｍｓ、１２ｍｓ、・・・１０ｍｓが表示されている。更に、下端部にはコンポーネント５２、５４、５６、５８、６０、データベース１８における合計実行時間が表示されている。
【００７８】
このような図１２のトレース情報の分析結果の表示を見ることで、この要求電文の分散アプリケーションシステムによる処理のルート上で、どのコンポーネントの位置でボトルネックとなっているかが、一目で判断できる。
【００７９】
図１３は分析表示のために整理した他のトレース情報の説明図であり、図１１の場合と同様、時間情報８６、ＩＰアドレス８８、プロセスＩＤ９０、リレーＩＤ９２、採取ポイント９４、コンポーネント名９６、コンポーネント内識別情報９８及びメソッド名１００の各項目について、時間順にソートして整理している。
【００８０】
図１４は図１３の整理情報から分析した表示例の説明図である。この図１４の要求電文のルートについての分析表示にあっては、図１２と対比すると、コンポーネント５２、５４、５６、５８、６０、データベース１８に加え、新たにコンポーネント１２６が通過ポイントとして加わっていることが分かる。この場合にも、横軸に示す各コンポーネント５２、５４、５６、５８、６０、データベース１８、コンポーネント１２６の通過ポイントに対し、縦軸に示す実行時間１２８〜１５６と各実行時間についての時間数値、更に下端部の実行時間の合計値が表示されることで、この要求電文の処理のためのルートのどの位置でボトルネックが生じているかを、簡単に判断することができる。
【００８１】
図１５は図１３の整理情報から得られた分析結果の表示例の他の説明図であり、この表示例にあっては、アプリケーションの実行時間をコンポーネント５２のレスポンス時間、つまり全体の処理時間に対する時間割合（パーセント）で示したことを特徴とする。この実行時間の数値が時間割合のパーセントで示されても、図１４の表示例の場合と同様、ルート上のどのコンポーネントの位置でボトルネックとなっているかが簡単に判断できる。なお実際のボトルネックの判断にあっては、図１５のパーセント表示よりは図１４の実行時間の数値表示の方が、より正確な判断ができる。
【００８２】
本発明は、図３のウェブサーバ１２、アプリケーションサーバ１４及びデータベースサーバ１６におけるトレース処理のためのプログラムを提供する。これらのサーバは、コンピュータのハードウェア資源により実現される。
【００８３】
コンピュータのハードウェア資源にあっては、ＣＰＵのバスに、ＲＡＭ、ハードディスク、通信用ボードなどが接続され、ハードディスクに本発明のトレース処理に必要なプログラムがローディングされており、コンピュータの起動時にハードディスクから必要なプログラムを読み出してＲＡＭ上に展開し、ＣＰＵにより実行することになる。
【００８４】
クライアント２４に対する要求電文の入口側に位置するウェブサーバ１２におけるトレース処理のためのプログラムとしては、図８のトレース条件埋込処理のフローチャートに従ったトレース条件埋込プログラムと、図９のトレース採取処理のフローチャートに従ったプログラムが格納されている。
【００８５】
一方、２段目以降のアプリケーションサーバ１４及びデータベースサーバ１６については、図９のトレース採取処理のフローチャートに従ったトレース採取プログラムのみが格納されて実行されることになる。更に管理サーバ２０にあっては、図１０の分析表示処理のフローチャートに示した分析表示プログラムがローディングされて実行されることになる。
【００８６】
なお本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【００８７】
ここで本発明の特徴を列挙すると次の付記のようになる。
【００８８】
（付記）
（付記１）
階層配置された複数のサーバ上で動作する複数のアプリケーションを有し、クライアントから要求電文を受信した際に、アプリケーション間でリレーコードを順番に受け渡しながら処理を実行して応答する分散アプリケーションシステムのトレース処理方法に於いて、
前記要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件を前記リレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込ステップと、
前記アプリケーションの各々に設けられ、前記要求電文の受信時に前記リレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップと、
各アプリケーションで採取されたトレースを収集して分析表示する分析表示ステップと、
を備えたことを特徴とするトレース処理方法。（１）
【００８９】
（付記２）
付記１記載のトレース処理方法に於いて、前記トレース条件埋込ステップは、前記トレース採取条件として、更に、トレースを採取する範囲をアプリケーション単位に指示する機能ＩＤと、通過したアプリケーションを記録するリレーＩＤを含むことを特徴とする特徴とするトレース処理方法。
【００９０】
（付記３）
付記１記載のトレース処理方法に於いて、
前記トレース条件埋込ステップは、前記スイッチ情報でトレース採取有りを指示した際にユニークなリレーＩＤを生成し、
前記トレース採取ステップは、次に呼び出すアプリケーションの識別子を前記リレーＩＤの後ろに繋げていくことを特徴とするトレース処理方法。
【００９１】
（付記４）
付記１記載のトレース処理方法に於いて、前記トレース条件埋込ステップは、前記トレース採取条件として、更に、前記スイッチ情報によるトレース採取有りの指示状態で前記要求電文の受信回数に対しトレースを採取する割合を指示する間欠スイッチ情報を含み、前記間欠スイッチ情報の割合に従って前記リレーコードにトレース採取条件を埋め込むことを特徴とするトレース処理方法。（２）
【００９２】
（付記５）
付記４記載のトレース処理方法に於いて、前記間欠スイッチ情報は、要求電文のルートを識別し、識別したルート毎に前記要求電文の受信回数に対しトレースを採取する割合を指示することを特徴とするトレース処理方法。
【００９３】
（付記６）
付記４又は５記載のトレース処理方法に於いて、前記間欠スイッチは前記要求電文の受信回数に対しトレースを採取する割合を０パーセント乃至１００パーセントの範囲で指示することを特徴とするトレース処理方法。
【００９４】
（付記７）
付記１記載のトレース処理方法に於いて、前記分析表示ステップは、前記トレース採取ステップにより各アプリケーションで採取されたトレース情報から、同一のリレーＩＤを持つトレース情報を抽出して時刻順にソートし、ソート結果に基づきルートと各アプリケーションと処理の関係を生成して表示させることを特徴とするトレース処理方法。
【００９５】
（付記８）
付記７記載のトレース処理方法に於いて、前記分析表示ステップは、要求電文を受信してから次に引き渡すまでの処理時間を通過ポイントとなる各アプリケーションに対応して表示させることを特徴とするトレース処理方法。
【００９６】
（付記９）
付記７記載のトレース処理方法に於いて、前記分析表示ステップは、入口のアプリケーションが要求電文を受信してから応答するまでの合計処理時間に対し、各アプリケーションが要求電文を受信して次に引き渡すまでの処理時間の割合を通過ポイントとなる各アプリケーションに対応して表示させることを特徴とするトレース処理方法。
【００９７】
（付記１０）
クライアントの要求電文を最初に処理する第１階層のアプリケーションを備えたサーバを構成するコンピュータに、
クライアントから前記要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件を前記リレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込ステップと、
前記リレーコードに埋め込むトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理すると共に、他のアプリケーションから前記要求電文を受信した際に、前記要求電文のリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップと、
を実行させることを特徴とするプログラム。（３）
【００９８】
（付記１１）
クライアントの要求電文を２回目以降に処理する第２階層以降のアプリケーションを備えたサーバを構成するコンピュータに、
他のアプリケーションから前記要求電文を受信した際に、前記要求電文のリレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取ステップを実行させることを特徴とするプログラム。（４）
【００９９】
（付記１２）
付記１０又は１１記載のプログラムに於いて、前記トレース条件埋込ステップは、更に、トレースを採取する範囲をアプリケーション単位に指示する機能ＩＤと、通過したアプリケーションを記録するリレーＩＤを含むことを特徴とする特徴とするプログラム。
【０１００】
（付記１３）
付記１２記載のプログラムに於いて、
前記トレース条件埋込ステップは、前記スイッチ情報でトレース採取有りを指示した際にユニークなリレーＩＤを生成し、
前記トレース採取ステップは、次に呼び出すアプリケーションの識別子を前記リレーＩＤの後ろに繋げていくことを特徴とするプログラム。
【０１０１】
（付記１４）
付記１０又は１１記載のプログラムに於いて、前記トレース条件埋込ステップは、前記トレース採取条件として、更に、前記スイッチ情報によるトレース採取有りの指示状態で前記要求電文の受信回数に対しトレースを採取する割合を指示する間欠スイッチ情報を含み、前記間欠スイッチ情報の割合に従って前記リレーコードにトレース採取条件を埋め込むことを特徴とするプログラム。
【０１０２】
（付記１５）
付記１４記載のプログラムに於いて、前記間欠スイッチ情報は、要求電文のルートを識別し、識別したルート毎に前記要求電文の受信回数に対しトレースを採取する割合を指示することを特徴とするプログラム。
【０１０３】
（付記１６）
付記１０又は１１記載のプログラムに於いて、前記間欠スイッチは前記要求電文の受信回数に対しトレースを採取する割合を０パーセント乃至１００パーセントの範囲で指示することを特徴とするプログラム。
【０１０４】
（付記１７）
階層配置された複数のサーバ上で動作する複数のアプリケーション処理部を有し、クライアントから要求電文を受信した際に、アプリケーション処理部の間でリレーコードを順番に受け渡しながら処理を実行して応答する分散アプリケーションのトレース処理装置に於いて、
前記要求電文を受信した際に、トレース採取の有無を指示するスイッチ情報を含む予め設定されたトレース採取条件を前記リレーコードに埋め込んで次のアプリケーションに受け渡すトレース条件埋込部と、
前記アプリケーションの各々に設けられ、前記要求電文の受信時に前記リレーコードに埋込まれたトレース採取条件のスイッチ情報によりトレース採取の有無を判別して処理するトレース採取部と、
各アプリケーション処理部で採取されたトレースを収集して分析表示する分析表示部と、を備えたことを特徴とするトレース処理装置。（５）
【０１０５】
（付記１８）
付記１７記載のトレース処理装置に於いて、前記トレース条件埋込部は、前記トレース採取条件として、更に、トレースを採取する範囲をアプリケーション単位に指示する機能ＩＤと、通過したアプリケーションを記録するリレーＩＤを含むことを特徴とするトレース処理装置。
【０１０６】
（付記１９）
付記１８記載のトレース処理装置に於いて、
前記トレース条件埋込部は、前記スイッチ情報でトレース採取有りを指示した際にユニークなリレーＩＤを生成し、
前記トレース採取部は、次に呼び出すアプリケーションの識別子を前記リレーＩＤの後ろに繋げていくことを特徴とするトレース処理装置。
【０１０７】
（付記２０）
付記１７記載のトレース処理装置に於いて、前記トレース条件埋込部は、前記トレース採取条件として、更に、前記スイッチ情報によるトレース採取有りの指示状態で前記要求電文の受信回数に対しトレースを採取する割合を指示する間欠スイッチ情報を含み、前記間欠スイッチ情報の割合に従って前記リレーコードにトレース採取条件を埋め込むことを特徴とするトレース処理装置。
【０１０８】
（付記２１）
付記２０記載のトレース処理装置に於いて、前記間欠スイッチ情報は、要求電文のルートを識別し、識別したルート毎に前記要求電文の受信回数に対しトレースを採取する割合を指示することを特徴とするトレース処理装置。
【０１０９】
（付記２２）
付記２０又は２１記載のトレース処理装置に於いて、前記間欠スイッチは前記要求電文の受信回数に対しトレースを採取する割合を０パーセント乃至１００パーセントの範囲で指示することを特徴とするトレース処理装置。
【０１１０】
（付記２３）
付記１７記載のトレース処理装置に於いて、前記分析表示部は、前記トレース採取部により各アプリケーションで採取されたトレース情報から、リレーＩＤに従ったルートのトレース情報を抽出して時刻順にソートし、ソート結果に基づきルートと各アプリケーションと処理の関係を生成して表示させることを特徴とするトレース処理装置。
【０１１１】
（付記２４）
付記１７記載のトレース処理装置に於いて、前記分析表示部は、要求電文を受信してから次に引き渡すまでの処理時間を通過ポイントとなる各アプリケーションに対応して表示させることを特徴とするトレース処理装置。
【符号の説明】
【０１１２】
１０：分散型アプリケーションシステム
１２、１２−１〜１２−４：ウェブサーバ
１４、１４−１〜１４−４：アプリケーションサーバ
１６、１６−１、１６−２：データベースサーバ
１８、１８−１、１８−２：データベース
２０：管理サーバ
２２：インターネット
２４：クライアント
２６、３４、３６：アプリケーション処理部
２８：トレース条件埋込部
３０−１〜３０−３：トレース採取部
３２−１〜３２−３：トレースファイル
３８：管理コンソール
４０：分析表示部
４２：トレース採取条件記憶部
４４：間接スイッチ処理部
４５：リレーＩＤ生成部
４６：トレース採取条件コード保持部
４８：トレース採取条件コード埋込部
５０：トレーススイッチ
５２、５４、５６、５８、６０、１２６：コンポーネント
６２−１〜６２−１０：リレーコード
６４：トレース採取条件
６６：スイッチ
６８：機能ＩＤ
７０：リレーＩＤ
７２：間欠スイッチ情報
７４、７５、７６、７８、８０、８２：アプリケーション
ィールド
５９０：サブシステム第２宛先フィールド
５９２：第２宛先指定フラグ
【図１】
2010118072.tif 000003
【図２】
2010118072.tif 000004
【図３】
2010118072.tif 000005
【図４】
2010118072.tif 000006
【図５】
2010118072.tif 000007
【図６】
2010118072.tif 000008
【図７】
2010118072.tif 000009
【図８】
2010118072.tif 000010
【図９】
2010118072.tif 000011
【図１０】
2010118072.tif 000012
【図１１】
2010118072.tif 000013
【図１２】
2010118072.tif 000014
【図１３】
2010118072.tif 000015
【図１４】
2010118072.tif 000016
【図１５】
2010118072.tif 000017
【図１６】
2010118072.tif 000018
【図１７】
2010118072.tif 000019
【図１８】
2010118072.tif 000020