(57)【特許請求の範囲】
【請求項１】
トランザクションの処理要求を受け付ける受付手段と、
前記受付手段が受け付けた処理要求を待ち行列に滞留する滞留手段と、
前記トランザクションを新たに実行することが可能になると、前記滞留手段の待ち行列に保持された処理要求に応じたトランザクションを実行する実行手段と、
前記実行手段が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、
前記滞留手段の待ち行列に滞留されている処理要求の滞留数と、前記受付手段が直近の所定時間内に前記処理要求を受け付けた直近受付回数と、前記受付手段が前記直近の所定時間以前に前記処理要求を受け付けた全受付回数の前記所定時間当たりの平均値と、を計測するリクエスト管理手段と、
前記実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数、直近受付回数および平均値とを記憶する情報記憶手段と、
前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する分析手段と、を含み、
前記分析手段は、前記滞留数が１以上であり、かつ、前記直近受付回数の前記平均値に対する増加度合が基準値以上であると、前記トランザクションの遅延障害の原因が、前記処理要求の増加であると判断する、トランザクション装置。
【請求項２】
トランザクションの処理要求を受け付ける受付手段と、
前記受付手段が受け付けた処理要求を待ち行列に滞留する滞留手段と、
前記トランザクションを新たに実行することが可能になると、前記滞留手段の待ち行列に保持された処理要求に応じたトランザクションを実行する実行手段と、
前記実行手段が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、
前記滞留手段の待ち行列に滞留されている処理要求の滞留数を計測するリクエスト管理手段と、
前記実行手段によるトランザクションの実行時間の直近の単位時間内の直近合計時間と、前記実行手段によるトランザクションの実行時間の前記直近の単位時間以前の全合計時間とを計測し、また、前記実行手段が前記直近の単位時間内に前記トランザクションを実行した直近実行回数と、前記実行手段が前記直近の単位時間以前に前記トランザクションを実行した全実行回数とを計測する実行管理手段と、
前記実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数と、前記実行管理手段が計測した直近合計時間、全合計時間、直近実行回数および全実行回数と、を記憶する情報記憶手段と、
前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する分析手段と、を含み、
前記分析手段は、前記直近合計時間を前記直近実行回数で除算して、直近平均実行時間を算出し、また、前記全合計時間を前記全実行回数で除算して、全平均実行時間を算出し、前記滞留数が１以上であり、かつ、前記直近平均実行時間の前記全平均実行時間に対する増加度合が設定値以上であると、前記トランザクションの遅延障害の原因が、前記実行時間の増加であると判断する、トランザクション装置。
【請求項３】
請求項１または２に記載のトランザクション装置において、
前記実行手段が前記トランザクションの実行を終了すると、前記情報記憶手段に記憶された実行開始時刻をクリアする状態管理手段を含み、
前記分析手段は、前記滞留数が１以上であり、かつ、前記情報記憶手段の中に現在時刻までの時間が基準時間以上となる実行開始時刻が記憶されていると、前記トランザクションの遅延障害の原因が、前記トランザクションのストールであると判断する、トランザクション装置。
【請求項４】
請求項３に記載のトランザクション装置において、
前記実行手段は、複数の処理単位を有し、前記複数の処理単位のそれぞれが前記トランザクションを実行し、
前記状態管理手段は、前記実行制御手段が計測したトランザクションの実行開始時刻を、該トランザクションの実行を開始した処理単位を特定する処理識別子と対応付けて前記情報記憶手段に記憶し、
前記分析手段は、前記現在時刻までの時間が前記基準時間以上である実行開始時刻があると、前記トランザクションの遅延障害の原因が、該実行開始時刻に対応する処理識別子にて特定される処理単位における前記トランザクションのストールであると判断する、トランザクション装置。
【請求項５】
請求項１ないし４のいずれか１項に記載のトランザクション装置において、
前記分析手段は、前記滞留数が０であると、前記トランザクションの遅延障害の原因が、前記実行時間の増加であると判断する、トランザクション装置。
【請求項６】
請求項１ないし５のいずれか１項に記載のトランザクション装置において、
前記分析手段は、前記情報記憶手段に対するリセット要求を受け付けると、前記情報記憶手段に記憶された情報をリセットする、トランザクション装置。
【請求項７】
請求項１ないし６のいずれか１項に記載のトランザクション装置において、
前記分析手段は、前記遅延障害の原因を分析する旨の分析要求を受け付けると、前記トランザクションの遅延障害の原因を分析する、トランザクション装置。
【請求項８】
請求項１ないし７のいずれか１項に記載のトランザクション装置において、
前記分析手段の分析結果に応じて、前記遅延障害に対する対処を行なう障害対応手段を含む、トランザクション装置。
【請求項９】
トランザクションの処理要求を受け付け、該処理要求を待ち行列に滞留し、前記トランザクションが新たに実行可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行するトランザクション装置において前記トランザクションの遅延障害の原因を分析する遅延障害分析装置であって、
前記トランザクション装置が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、
前記トランザクション装置の待ち行列に滞留されている処理要求の滞留数と、前記トランザクション装置が直近の所定時間内に前記処理要求を受け付けた直近受付回数と、前記トランザクション装置が前記直近の所定時間以前に前記処理要求を受け付けた全受付回数の前記所定時間当たりの平均値と、を計測するリクエスト管理手段と、
前記実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数、直近受付回数および平均値と、を記憶する情報記憶手段と、
前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する分析手段と、を含み、
前記分析手段は、前記滞留数が１以上であり、かつ、前記直近受付回数の前記平均値に対する増加度合が基準値以上であると、前記トランザクションの遅延障害の原因が、前記処理要求の増加であると判断する、遅延障害分析装置。
【請求項１０】
トランザクションの処理要求を受け付け、該処理要求を待ち行列に滞留し、前記トランザクションが新たに実行可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行するトランザクション装置において前記トランザクションの遅延障害の原因を分析する遅延障害分析装置であって、
前記トランザクション装置が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、
前記トランザクション装置の待ち行列に滞留されている処理要求の滞留数を計測するリクエスト管理手段と、
前記トランザクション装置によるトランザクションの実行時間の直近の単位時間内の直近合計時間と、前記トランザクション装置によるトランザクションの実行時間の前記直近の単位時間以前の全合計時間とを計測し、また、前記実行手段が前記直近の単位時間内に前記トランザクションを実行した直近実行回数と、前記トランザクション装置が前記直近の単位時間以前に前記トランザクションを実行した全実行回数とを計測する実行管理手段と、
前記実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数と、前記実行管理手段が計測した直近合計時間、全合計時間、直近実行回数および全実行回数とを記憶する情報記憶手段と、
前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する分析手段と、を含み、
前記分析手段は、前記直近合計時間を前記直近実行回数で除算して、直近平均実行時間を算出し、また、前記全合計時間を前記全実行回数で除算して、全平均実行時間を算出し、前記滞留数が１以上であり、かつ、前記直近平均実行時間の前記全平均実行時間に対する増加度合が設定値以上であると、前記トランザクションの遅延障害の原因が、前記実行時間の増加であると判断する、遅延障害分析装置。
【請求項１１】
請求項１０に記載の遅延障害分析装置において、
前記トランザクション装置が前記トランザクションの実行を終了すると、前記情報記憶手段に記憶された実行開始時刻をクリアする状態管理手段を含み、
前記分析手段は、前記滞留数が１以上であり、かつ、前記情報記憶手段の中に現在時刻までの時間が基準時間以上となる実行開始時刻が記憶されていると、前記トランザクションの遅延障害の原因が、前記トランザクションのストールであると判断する、遅延障害分析装置。
【請求項１２】
トランザクションの処理要求を受け付け、
前記受け付けられた処理要求を待ち行列に滞留し、
前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行し、
前記トランザクションの実行が開始された実行開始時刻を計測し、
前記待ち行列に滞留されている処理要求の滞留数を計測し、
直近の所定時間内に前記処理要求を受け付けた直近受付回数を計測し、
前記直近の所定時間以前に前記処理要求を受け付けた全受付回数の前記所定時間当たりの平均値を計測し、
前記計測された実行開始時刻、滞留数、直近受付回数および平均値を記憶し、
前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析し、
前記分析では、前記滞留数が１以上であり、かつ、前記直近受付回数の前記平均値に対する増加度合が基準値以上であると、前記トランザクションの遅延障害の原因が、前記処理要求の増加であると判断する、遅延障害分析方法。
【請求項１３】
トランザクションの処理要求を受け付け、
前記受け付けられた処理要求を待ち行列に滞留し、
前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行し、
前記トランザクションの実行が開始された実行開始時刻を計測し、
前記待ち行列に滞留されている処理要求の滞留数を計測し、
前記トランザクションの実行時間の直近の単位時間内の直近合計時間を計測し、
前記トランザクションの実行時間の前記直近の単位時間以前の全合計時間を計測し、
前記直近の単位時間内に前記トランザクションを実行した直近実行回数を計測し、
前記直近の単位時間以前に前記トランザクションを実行した全実行回数を計測し、
前記計測された実行開始時刻、滞留数、近合計時間、全合計時間、直近実行回数および全実行回数を記憶し、
前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析し、
前記分析は、前記直近合計時間を前記直近実行回数で除算して、直近平均実行時間を算出し、また、前記全合計時間を前記全実行回数で除算して、全平均実行時間を算出し、前記滞留数が１以上であり、かつ、前記直近平均実行時間の前記全平均実行時間に対する増加度合が設定値以上であると、前記トランザクションの遅延障害の原因が、前記実行時間の増加であると判断する、遅延障害分析方法。
【請求項１４】
請求項１３に記載の遅延障害分析方法において、
前記トランザクションの実行が終了されると、前記記憶された前記実行開始時刻をクリアし、
前記滞留数が１以上であり、かつ、現在時刻までの時間が基準時間以上となる実行開始時刻が記憶されていると、前記トランザクションの遅延障害の原因が、前記トランザクションのストールであると判断する、遅延障害分析方法。
【請求項１５】
トランザクションの遅延障害の分析をコンピュータに実行させるプログラムであって、
トランザクションの処理要求を受け付ける手順と、
前記受け付けられた処理要求を待ち行列に滞留する手順と、
前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行する手順と、
前記トランザクションの実行が開始された実行開始時刻を計測する手順と、
前記待ち行列に滞留されている処理要求の滞留数を計測する手順と、
直近の所定時間内に前記処理要求を受け付けた直近受付回数を計測する手順と、
前記直近の所定時間以前に前記処理要求を受け付けた全受付回数の前記所定時間当たりの平均値を計測する手順と、
前記計測された実行開始時刻、滞留数、近合計時間、全合計時間、直近実行回数および全実行回数を記憶する手順と、
前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する手順と、を前記コンピュータに実行させ、
前記分析する手順では、前記滞留数が１以上であり、かつ、前記直近受付回数の前記平均値に対する増加度合が基準値以上であると、前記トランザクションの遅延障害の原因が、前記処理要求の増加であると判断する、プログラム。
【請求項１６】
トランザクションの遅延障害の分析をコンピュータに実行させるプログラムであって、
トランザクションの処理要求を受け付ける手順と、
前記受け付けられた処理要求を待ち行列に滞留する手順と、
前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行する手順と、
前記トランザクションの実行が開始された実行開始時刻を計測する手順と、
前記待ち行列に滞留されている処理要求の滞留数を計測する手順と、
前記トランザクションの実行時間の直近の単位時間内の直近合計時間を計測する手順と、
前記トランザクションの実行時間の前記直近の単位時間以前の全合計時間を計測する手順と、
前記直近の単位時間内に前記トランザクションを実行した直近実行回数を計測する手順と、
前記直近の単位時間以前に前記トランザクションを実行した全実行回数を計測する手順と、
前記計測された実行開始時刻、滞留数、近合計時間、全合計時間、直近実行回数および全実行回数を記憶する手順と、
前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記トランザクションの実行時間の増加か、前記処理要求の増加か、それとも、前記トランザクションのストールかを分析する手順と、を前記コンピュータに実行させ、
前記分析する手順では、前記直近合計時間を前記直近実行回数で除算して、直近平均実行時間を算出し、また、前記全合計時間を前記全実行回数で除算して、全平均実行時間を算出し、前記滞留数が１以上であり、かつ、前記直近平均実行時間の前記全平均実行時間に対する増加度合が設定値以上であると、前記トランザクションの遅延障害の原因が、前記実行時間の増加であると判断する、プログラム。
【請求項１７】
請求項１６に記載のプログラムにおいて、
前記コンピュータに、前記トランザクションの実行が終了されると、前記記憶された実行開始時刻をクリアする手順をさらに実行させ、
前記分析する手順では、前記滞留数が１以上であり、かつ、現在時刻までの時間が基準時間以上となる実行開始時刻が記憶されていると、前記トランザクションの遅延障害の原因が、前記トランザクションのストールであると判断する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクションの遅延障害の原因を分析するトランザクション装置、遅延障害分析装置、遅延障害分析方法およびプログラムに関する。
【背景技術】
【０００２】
互いに不可分な複数の処理から構成されるトランザクションの遅延障害を検出する方法には、以下の検出方法が知られている。なお、遅延障害は、トランザクションが通常に比べて遅延する障害である。
【０００３】
この検出方法では、トランザクションを構成する処理ごとに閾値となる時間が設定され、その閾値を超える処理を検出した場合に、その処理を有するトランザクションに遅延が発生したと判断している。
【０００４】
ここで、閾値は、トランザクション装置の管理者にて手動で設定されていた。このため、トランザクション装置は、遅延障害の発生を正確にまたは全く検出することができない場合があった。例えば、閾値が適切な値に設定されていないと、遅延障害の発生を正確に検出できないし、管理者が閾値を設定し忘れると、遅延障害の発生を全く検出できない。
【０００５】
特許文献１には、管理者がトランザクションを構成する処理ごとに閾値を設定しなくても遅延障害の発生を検出することが可能なトランザクション装置が記載されている。
【０００６】
このトランザクション装置は、先ず、トランザクションの実行時間を計測する。続いて、トランザクション装置は、その実行時間に基づいて、直近の単位時間以前に実行されたトランザクションの実行時間の平均値（過去の実行時間の平均値）と、直近の所定時間内に実行されたトランザクションの実行時間の平均値（直近の実行時間の平均値）とを算出する。そして、トランザクション装置は、過去の実行時間の平均値と直近の実行時間の平均値を比較して、直近の実行時間の平均値が過去の実行時間の平均値を超えると、トランザクションに遅延障害が発生したと判断する。
【０００７】
このため、特許文献１に記載のトランザクション装置では、管理者がトランザクションを構成する処理ごとに閾値を設定しなくても遅延障害の発生を検出することができる。このため、遅延障害の発生を正確に検出することが可能になる。
【特許文献１】特開２００７−２４９６６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
トランザクションの遅延障害の検出とは別に、発生したトランザクションの遅延障害の原因を分析する技術が提案または実用化されている。
【０００９】
トランザクションの遅延障害の原因には、トランザクションの実行時間の増加と、トランザクションの実行の滞留とがある。また、トランザクションの実行の滞留は、トランザクションの処理要求がトランザクションを同時に実行できる実行可能数よりも多くなることで生じることもあるし、トランザクション装置に恒久的な障害が発生し、実行中のトランザクションがストールしたことで発生することもある。また、これらの原因が、同時に発生することもある。
【００１０】
なお、トランザクション装置は、スレッドやプロセスなどの処理単位ごとにトランザクションを実行することで、複数のトランザクションを同時に実行する。この処理単位の数が、実行可能数となる。ここで、実行中のトランザクションがストールした場合、そのストール状態のトランザクションが処理単位を専有することとなり、トランザクション装置の処理能力が低下する。具体的には、トランザクションを同時に実行できる実質的な数が減少する。このため、処理要求の数が実行可能数よりも少なくても、トランザクションの実行が滞留される。
【００１１】
上述のトランザクションを構成する処理ごとに閾値となる時間を設定する検出方法や、特許文献１に記載の発明では、トランザクションの実行時間の増加により発生した遅延障害を検出することしかできない。このため、遅延障害が発生した場合に、その遅延障害の原因が、トランザクションの実行時間の増加なのか、それとも、トランザクションの実行の滞留なのかを分析することができないという問題がある。
【００１２】
本発明の目的は、上記の課題である、トランザクションの遅延障害の原因を分析することはできないという問題を解決する、トランザクション装置、遅延障害分析装置、遅延障害分析方法およびプログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明によるトランザクション装置は、トランザクションの処理要求を受け付ける受付手段と、前記受付手段が受け付けた処理要求を待ち行列に滞留する滞留手段と、前記トランザクションを新たに実行することが可能になると、前記滞留手段の待ち行列に保持された処理要求に応じたトランザクションを実行する実行手段と、前記実行手段が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、前記滞留手段の待ち行列に滞留されている処理要求の滞留数を計測するリクエスト管理手段と、実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数とを記憶する情報記憶手段と、前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記実行時間の増加か、それとも、前記トランザクションの実行の滞留かを分析する分析手段と、を含む。
【００１４】
また、本発明による遅延障害分析装置は、トランザクションの処理要求を受け付け、該処理要求を待ち行列に滞留し、前記トランザクションが新たに実行可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行するトランザクション装置において前記トランザクションの遅延障害の原因を分析する遅延障害分析装置であって、前記トランザクション装置が前記トランザクションの実行を開始した実行開始時刻を計測する実行制御手段と、前記トランザクション装置の待ち行列に滞留されている処理要求の滞留数を計測するリクエスト管理手段と、前記実行制御手段が計測した実行開始時刻と、前記リクエスト管理手段が計測した滞留数と、を記憶する情報記憶手段と、前記情報記憶手段に記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記実行時間の増加か、それとも、前記トランザクションの実行の滞留かを分析する分析手段と、を含む。
【００１５】
また、本発明による遅延障害分析方法は、トランザクションの処理要求を受け付け、
前記受け付けられた処理要求を待ち行列に滞留し、前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行し、前記トランザクションの実行が開始された実行開始時刻を計測し、前記待ち行列に滞留されている処理要求の滞留数を計測し、前記計測された実行開始時刻および滞留数を記憶し、前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記実行時間の増加か、それとも、前記トランザクションの実行の滞留かを分析する。
【００１６】
また、本発明によるプログラムは、トランザクションの遅延障害の分析をコンピュータに実行させるプログラムであって、トランザクションの処理要求を受け付ける手順と、前記受け付けられた処理要求を待ち行列に滞留する手順と、前記トランザクションを新たに実行することが可能になると、前記待ち行列に保持された処理要求に応じたトランザクションを実行する手順と、前記トランザクションの実行が開始された実行開始時刻を計測する手順と、前記待ち行列に滞留されている処理要求の滞留数を計測する手順と、前記計測された実行開始時刻および滞留数を記憶する手順と、前記記憶された情報に基づいて、前記トランザクションの遅延障害の原因が、前記実行時間の増加か、それとも、前記トランザクションの実行の滞留かを分析する手順と、を前記コンピュータに実行させる。
【発明の効果】
【００１７】
本発明によれば、遅延障害の原因を分析することが可能になる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について図面を参照して説明する。
【００１９】
図１は、本発明の第一の実施形態のトランザクションシステムを示したブロック図である。図１において、トランザクションシステムは、サーバコンピュータ１（トランザクション装置）と、複数のクライアント端末２と、運用管理端末３とを含む。ここで、サーバコンピュータ１は、クライアント端末２と運用管理端末３のそれぞれに、ネットワークＮを介して相互に接続される。
【００２０】
サーバコンピュータ１は、クライアント端末２からトランザクションの処理要求を受け付け、その処理要求に応じたトランザクションを実行し、その実行結果を処理要求に応じた応答情報としてクライアント端末２に送信する。また、サーバコンピュータ１は、運用管理端末３と任意の情報を送受信する。
【００２１】
なお、トランザクションシステムは、図１で示した形態に限らず、サーバコンピュータ１が処理要求を受け付け、その処理要求に応じたトランザクションを実行するように動作するものであればよい。
【００２２】
クライアント端末２は、トランザクションの処理要求をサーバコンピュータ１に送信し、その処理要求に応じた応答情報をサーバコンピュータ１から受信する。なお、クライアント端末２は、クライアントアプリケーションプログラムをＣＰＵに実行させることで、上記の処理を行っているものとする。
【００２３】
運用管理端末３は、サーバコンピュータ１の管理者にて使用され、サーバコンピュータ１の制御および管理を行なう。
【００２４】
以下、サーバコンピュータ１について詳細に説明する。
【００２５】
サーバコンピュータ１では、トランザクションを実行するためのサーバアプリケーションプログラム（以下、サーバアプリケーションと略す）に従ってＣＰＵがトランザクションを実行する。サーバアプリケーションは、一つでも複数でもよい。なお、各サーバアプリケーションには、実行可能なトランザクションの種別が定められている。
【００２６】
また、サーバアプリケーションは、一つまたは複数の処理単位を有し、ＣＰＵは、その処理単位ごとにトランザクションを独立に実行する。なお、処理単位は、例えば、スレッドまたはプロセスなどである。本実施形態では、サーバアプリケーションは、複数あり、各サーバアプリケーションは、複数の処理単位を有するものとする。また、処理単位は、スレッドであるとする。
【００２７】
図２は、サーバコンピュータ１の構成例を示したブロック図である。図２において、サーバコンピュータ１は、記憶装置１Ａと、演算装置１Ｂとを含む。
【００２８】
記憶装置１Ａは、例えば、ハードディスクであり、トランザクションの遅延障害の原因を分析するためデータベースである管理表を記憶する管理表記憶部１１を含む。
【００２９】
演算装置１Ｂは、ＣＰＵであり、ＣＰＵにて読み取り可能な記録媒体からプログラムを読み取り、読み取ったプログラムを実行して、リクエスト受付部１２と、キュー制御部１３と、サーバアプリケーション部１４と、トランザクション制御部１５と、情報管理部１６と、障害分析部１７と、障害対応部１８とを実現する。ここで、記録媒体は、記憶装置１Ａでもよいし、他のものでもよい。
【００３０】
また、管理表記憶部１１、トランザクション制御部１５、情報管理部１６、障害分析部１７および障害対応部１８は、トランザクションの遅延障害を分析する遅延障害分析装置を構成する。
【００３１】
なお、演算装置１Ｂには、トランザクションの遅延障害の原因を分析する機能の他に、一般的なサーバコンピュータが備える機能なども有しているが、それらの機能は本発明と直接関係しないので、その説明は省略する。また、記憶装置１Ａには、管理表の他に、演算装置１Ｂが一般的なサーバコンピュータが備える機能を実現するために必要な情報を記憶しているが、その情報は本発明と直接関係しないので、その情報の説明は省略する。
【００３２】
以下、記憶装置１Ａおよび演算装置１Ｂの各部について詳細に説明する。
【００３３】
記憶装置１Ａの管理表記憶部１１は、情報記憶手段の一例である。管理表記憶部１１は、管理表として、トランザクション実行時間管理表と、リクエスト受付情報管理表と、サーバアプリケーション状態管理表とを記憶する。
【００３４】
トランザクション実行時間管理表（以下、実行時間管理表と略す）では、トランザクションが実行された実行回数と、トランザクションの実行時間の合計時間とが、トランザクションの種別を特定するトランザクション識別子ごとに対応付けられている。
【００３５】
トランザクションの実行回数としては、直近の単位時間内にトランザクションが実行された回数である直近実行回数と、直近の単位時間以前にトランザクションが実行された回数である全実行回数とがある。
【００３６】
また、トランザクションの実行時間の合計時間としては、トランザクションの実行時間の直近の単位時間内の合計である直近合計時間と、トランザクションの実行時間の直近の単位時間以前の合計である全合計時間とがある。なお、単位時間は、固定でもよいし、可変でもよい。
【００３７】
図３は、実行時間管理表の一例を示した説明図である。図３において、実行時間管理表１００は、トランザクション識別子１０１と、トランザクション実行回数（全体）１０２と、トランザクション実行時間合計（全体）１０３と、トランザクション実行回数（直近）１０４と、トランザクション実行時間合計（直近）１０５とを含む。
【００３８】
トランザクション識別子１０１は、トランザクションの種別を特定するための情報である。トランザクション実行回数（全体）１０２は、全実行回数の一例である。トランザクション実行時間合計（全体）１０３は、全合計時間の一例である。トランザクション実行回数（直近）１０４は、直近実行回数の一例である。トランザクション実行時間合計（直近）１０５は、直近合計時間の一例である。
【００３９】
図２に戻る。リクエスト受付情報管理表（以下、受付情報管理表と略す）では、処理要求が受け付けられた受付回数と、トランザクションの滞留数とが、処理要求に応じたトランザクションを実行可能なサーバアプリケーションを特定するサーバアプリケーション識別子ごとに対応付けられている。
【００４０】
受付回数には、サーバコンピュータ１が直近の所定時間内に処理要求を受け付けた回数である直近受付回数と、サーバコンピュータ１が直近の所定時間以前に処理要求を受け付けた回数の単位時間当たりの平均値である平均受付回数とがある。また、滞留数は、後述するキュー制御部１３の待ち行列に滞留されている処理要求の数である。
【００４１】
なお、所定時間は、単位時間と同じでもよいし異なっていてもよいが、本実施形態では、所定時間は、単位時間と同じであるとし、所定時間を単位時間と称する
図４は、受付情報管理表の一例を示した説明図である。図４において、受付情報管理表２００は、サーバアプリケーション識別子２０１と、単位時間当たりのリクエスト受付回数平均（全体）２０２と、リクエスト受付回数（直近）２０３と、キュー滞留リクエスト数２０４とを含む。
【００４２】
単位時間当たりのリクエスト受付回数平均（全体）２０２は、平均受付回数の一例である。リクエスト受付回数（直近）２０３は、直近受付回数の一例である。キュー滞留リクエスト数２０４は、滞留数の一例である。
【００４３】
図２に戻る。サーバアプリケーション状態管理表（以下、状態管理表と略す）では、トランザクション識別子と、サーバコンピュータ１がトランザクションの実行を開始した実行開始時刻とが、トランザクションを実行可能な処理単位を特定する処理識別子ごとに対応付けられている。なお、実行が終了したトランザクションの実行開始時刻は、クリアされている。
【００４４】
処理識別子は、トランザクションを実行可能なサーバアプリケーション識別子と、サーバアプリケーションの処理単位を特定する処理単位識別子とからなる。ここで、処理単位識別子は、サーバアプリケーションごとに一意に定められていればよい。
【００４５】
図５は、状態管理表の一例を示した説明図である。図５において、状態管理表３００は、サーバアプリケーション識別子３０１と、処理単位識別子３０２と、トランザクション識別子３０３と、トランザクション開始時間３０４とを含む。
【００４６】
サーバアプリケーション識別子３０１は、サーバアプリケーションを特定する。処理単位識別子は、サーバアプリケーション識別子３０１の処理単位を特定する。トランザクション識別子３０３は、トランザクションの種別を特定する。トランザクション開始時間３０４は、トランザクションの実行開始時刻の一例である。
【００４７】
次に、演算装置１Ｂの各部について詳細に説明する。
【００４８】
リクエスト受付部１２は、受付手段の一例である。リクエスト受付部１２は、クライアント端末２からトランザクションの処理要求を受け付ける。トランザクションの処理要求は、実行を要求するトランザクションの種別を特定するトランザクション識別子を含む。
【００４９】
キュー制御部１３は、滞留手段の一例である。キュー制御部１３は、リクエスト受付部１２が受け付けた処理要求を、キュー制御部１３自身が保持している待ち行列に滞留する。このとき、キュー制御部１３は、トランザクションの種別ごとに待ち行列を保持し、処理要求を、その処理要求に応じたトランザクションの種別の待ち行列に滞留する。
【００５０】
サーバアプリケーション部１４は、実行手段の一例であり、サーバアプリケーションにて実現される。
【００５１】
サーバアプリケーション部１４は、トランザクションを実行し、その実行結果に応じた応答情報をクライアント端末２に送信する。ここで、サーバアプリケーション部１４は、トランザクションの種別ごとに、その種別のトランザクションを実行可能なサーバアプリケーションが有する処理単位の数だけ、トランザクションを同時に実行することが可能である。
【００５２】
トランザクション制御部１５は、実行制御手段の一例である。トランザクション制御部１５は、サーバアプリケーション部１４によるトランザクションの実行を制御する。
【００５３】
具体的には、トランザクション制御部１５は、サーバアプリケーション部１４でトランザクションを実行中でない処理単位があるか否かを判断する。以下、トランザクションを実行中でない処理単位を、空きスレッドと称する。
【００５４】
トランザクション制御部１５は、空きスレッドがあると、サーバアプリケーション部１４にてトランザクションが新たに実行可能であると判断する。そして、トランザクション制御部１５は、空きスレッドで実行可能なトランザクションの種別の待ち行列から処理要求を取得し、その取得した処理要求をサーバアプリケーション部１４に渡す。サーバアプリケーション部１４は、処理要求を受け付けると、その処理要求に応じたトランザクションを実行する。
【００５５】
これにより、サーバアプリケーション部１４は、トランザクションを新たに実行することが可能になると、キュー制御部１３の待ち行列に保持された処理要求に応じたトランザクションを実行することになる。
【００５６】
また、トランザクション制御部１５は、サーバアプリケーション部１４がトランザクションの実行を開始した時刻を実行開始時刻として計測する。
【００５７】
情報管理部１６は、管理表記憶部１１内の情報を管理する。
【００５８】
図６は、情報管理部１６の構成例を示したブロック図である。図６において、情報管理部１６は、リクエスト管理部１６１と、実行時間管理部１６２と、状態管理部１６３とを含む。
【００５９】
リクエスト管理部１６１は、管理表記憶部１１内の受付情報管理表を管理する。具体的には、リクエスト管理部１６１は、以下の処理を行う。
【００６０】
リクエスト管理部１６１は、サーバアプリケーションを特定するサーバアプリケーション識別子と、そのサーバアプリケーションが実行可能なトランザクションの種別を特定するトランザクション識別子との対応関係を示した対応情報を保持する。
【００６１】
リクエスト管理部１６１は、その対応情報から、リクエスト受付部１２が受け付けた処理要求内のトランザクション識別子に対応するサーバアプリケーション識別子を割り出す。そして、リクエスト管理部１６１は、リクエスト受付部１２が処理要求を受け付けた受付回数と、キュー制御部１３の待ち行列が保持している処理要求の滞留数とを、その割り出したサーバアプリケーション識別子ごとに計測する。ここで、リクエスト管理部１６１は、受付回数として、直近受付回数および平均受付回数を計測する。
【００６２】
リクエスト管理部１６１は、計測した受付回数および滞留数をそのアプリケーション識別子と対応付けて管理表記憶部１１内の受付情報管理表に記憶する。
【００６３】
実行時間管理部１６２は、管理表記憶部１１内の実行時間管理表を管理する。具体的には、実行時間管理部１６２は、以下の処理を行う。
【００６４】
実行時間管理部１６２は、サーバアプリケーション部１４によるトランザクションの実行時間の合計時間と、そのトランザクションの実行回数とを、トランザクション識別子ごとに計測する。ここで、実行時間管理部１６２は、実行時間の合計時間として、全合計時間および直近合計時間を計測し、実行回数として、全実行回数および直近実行回数を計測する。
【００６５】
実行時間管理部１６２は、計測した実行時間の合計時間および実行回数を、そのトランザクション識別子と対応付けて管理表記憶部１１内の実行時間管理表に記憶する。
【００６６】
状態管理部１６３は、管理表記憶部１１内の実行時間管理表を管理する。具体的には、状態管理部１６３は、以下の処理を行う。
【００６７】
状態管理部１６３は、サーバアプリケーション部１４がトランザクションの実行を開始すると、トランザクション制御部１５が計測した実行開始時刻と、そのトランザクションの種別を特定するトランザクション識別子とを、そのトランザクションを実行した処理単位を特定する処理識別子に対応付けて、管理表記憶部１１内の状態管理表に記憶する。
【００６８】
また、状態管理部１６３は、サーバアプリケーション部１４がトランザクションの実行を終了すると、管理表記憶部１１に記憶された状態管理表から、トランザクションの実行を終了した処理単位を特定する処理識別子に対応するトランザクション識別子および実行開始時刻をクリアする。
【００６９】
また、情報管理部１６は、運用管理者から管理表記憶部１１に記憶された各管理表をリセットする旨のリセット要求を受け付けると、管理表記憶部１１内の管理表をリセット（削除）する。ここで、情報管理部１６において、リクエスト管理部１６１が受付情報管理表をリセットし、実行時間管理部１６２が実行時間管理表をリセットし、状態管理部１６３が状態管理表をリセットする。なお、実行時間管理部１６２は、実行時間管理表の全体をリセットしてもよいし、運用管理者にて指定されたトランザクション識別子の行のみをリセットしてもよい。
【００７０】
また、管理者は、運用管理端末３を用いて情報管理部１６にリセット要求を入力してもよいし、サーバコンピュータ１に直接接続されたキーボードなどの入力装置（図示せず）を用いて情報管理部１６にリセット要求を入力してもよい。なお、運用管理者は、例えば、サーバコンピュータ１の稼動環境に変化があった場合に、リセット要求を入力する。これにより、新しい環境に即した遅延障害の原因の分析を行うことが可能になる。
【００７１】
障害分析部１７は、分析手段の一例である。障害分析部１７は、管理表記憶部１１に記憶された各管理表に基づいて、トランザクションの遅延障害の原因を分析する。具体的には、障害分析部１７は、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加か、処理要求の増加によって生じたトランザクションの実行の滞留か、それとも、トランザクションのストールによって生じたトランザクションの実行の滞留かを分析する。
【００７２】
ここで、障害分析部１７は、運用管理者からトランザクションの遅延障害の原因を分析する旨の分析要求を受け付けたときや、サーバコンピュータ１などに備わったトランザクションの遅延障害を検出する検出部（図示せず）にて遅延障害が検出され、その検出部から分析要求を受け付けたときなど、任意のタイミングで遅延障害を分析する。
【００７３】
なお、分析要求は、遅延障害の分析対象となるサーバアプリケーションを特定するサーバアプリケーション識別子を含む。以下、遅延障害の分析対象となるサーバアプリケーションを対象サーバアプリケーションと称し、対象サーバアプリケーションを特定するサーバアプリケーション識別子を対象サーバアプリケーション識別子と称することもある。また、対象サーバアプリケーションにて実行可能なトランザクションの種別を特定するトランザクション識別子を対象トランザクション識別子と称することもある。
【００７４】
また、障害分析部１７は、対応情報を保持し、その対応情報から、分析要求内の対象サーバアプリケーションに対応する対象トランザクション識別子を割り出すことができる。
【００７５】
障害分析部１７は、具体的には、以下のように遅延障害の原因を分析する。
【００７６】
先ず、障害分析部１７は、管理表記憶部１１内のリクエスト管理表において、分析要求内の対象サーバアプリケーション識別子に対応する滞留数が０以下か否かを確認する。
【００７７】
障害分析部１７は、滞留数が０以下の場合、対象サーバアプリケーション識別子にて特定されるアプリケーションに空きスレッドがあるか否かを確認する。
【００７８】
障害分析部１７は、空きスレッドがあると、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加であると判断する。なお、障害分析部１７は、空きスレッドの確認を行わず、滞留数が０以下であると、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加であると判断してもよい。
【００７９】
このとき、情報管理部１６が、例えば、トランザクションの開始時および終了時に、管理表記憶部１１内の実行時間管理表にＣＰＵ使用時間などの追加情報が付加するなどしておき、障害分析部１７が、トランザクションの実行時間の増加が、ＣＰＵ使用時間の増加によって生じたものか、それとも、処理待ち時間の増加によって生じたものなのかなど、遅延障害の原因を絞り込んでもよい。
【００８０】
一方、障害分析部１７は、滞留数が１以上の場合、または、滞留数が０以下であり、かつ、空きスレッドがない場合、以下の処理を行う。
【００８１】
具体的には、障害分析部１７は、管理表記憶部１１内の状態管理表において、対象サーバアプリケーション識別子に対応する実行開始時刻の中で、現在時刻までの時間が基準時間以上である実行開始時刻があるか否かを判断する。障害分析部１７は、現在時刻までの時間が基準時間以上である実行開始時刻があると、トランザクションの遅延障害の原因が、その実行開始時刻に対応する処理識別子にて特定される処理単位におけるトランザクションのストールによって生じた、トランザクションの実行の滞留であると判断する。
【００８２】
ここで、基準時間は、運用管理者にて設定されてもよいし、障害分析部１７が実行時間管理表に基づいて算出してもよい。例えば、障害分析部１７は、全合計時間を全実行回数で除算して実行時間の平均値を算出し、その平均値を基準時間として算出する。
【００８３】
情報管理部１６が、例えば、トランザクションの開始時および終了時に、状態管理表および実行時間管理表にＣＰＵ使用時間などの追加情報などを付加するなどしておき、障害分析部１７が、トランザクションがストール状態である原因が、ＣＰＵループによって生じたものか、それとも、それ以外のバックエンドの処理待ち等によるものなのかなど、遅延障害の原因を絞り込んでもよい。
【００８４】
また、障害分析部１７は、管理表記憶部１１内の実行時間管理表において、対象トランザクション識別子に対応する直近合計時間を直近実行回数で除算して、サーバアプリケーション部１４が直近の単位時間内に実行したトランザクションの実行時間の平均値である直近平均実行時間を算出する。また、障害分析部１７は、対象トランザクション識別子に対応する全合計時間を全実行回数で除算して、サーバアプリケーション部１４が直近の単位時間以前に実行したトランザクションの実行時間の平均値である全平均実行時間を算出する。
【００８５】
障害分析部１７は、直近平均実行時間の全平均実行時間に対する増加度合を求め、その増加度合が設定値以上か否かを判断する。ここで、増加度合は、直近平均実行時間および全平均実行時間の差分または比率である。
【００８６】
障害分析部１７は、その増加度合が設定値以上であると、トランザクション装置の遅延障害の原因が、トランザクションの実行時間の増加であると判断する。また、障害分析部１７は、その結果、トランザクションの実行の滞留も発生していると判断する。
【００８７】
情報管理部１６が、例えば、トランザクションの開始時および終了時に、実行時間管理表にＣＰＵ使用時間などの追加情報などを付加するなどしておき、障害分析部１７が、トランザクションがストール状態である原因が、ＣＰＵループによって生じたものか、それとも、処理待ち時間の増加なのかなど、遅延障害の原因を絞り込んでもよい。
【００８８】
また、障害分析部１７は、管理表記憶部１１内の実行時間管理表において、対象トランザクション識別子に対応する直近受付回数の、対象トランザクション識別子に対応する平均受付回数に対する増加度合を算出する。ここで、増加度合は、直近受付回数および平均受付回数の差分または比率である。
【００８９】
障害分析部１７は、その増加度合が基準値以上か否かを判断する。なお、基準値は、運用管理者にて設定されてもよいし、障害分析部１７は、直近受付回数および全受付回数から求めてもよい。
【００９０】
障害分析部１７は、その増加度合が基準値以上であると、トランザクションの遅延障害の原因が、処理要求の増加によって生じたトランザクションの実行の滞留であると判断する。
【００９１】
障害対応部１８は、障害分析部１７の分析結果に応じた、トランザクションの遅延障害に対する対処を行う。
【００９２】
例えば、障害対応部１８は、障害分析部１７にてトランザクションの遅延障害の原因がトランザクションの実行時間の増加であると判断されると、運用管理者への通知や、サーバアプリケーションの処理能力増強、追加の情報採取などを行う。
【００９３】
また、障害対応部１８は、障害分析部１７にてトランザクションの遅延障害の原因がトランザクションのストールによって生じたトランザクションの実行の滞留であると判断されると、サーバアプリケーションの同時処理可能数の追加、追加の情報採取およびストール状態のトランザクションの強制終了などを行なう。
【００９４】
また、障害対応部１８は、障害分析部１７にてトランザクションの遅延障害の原因が処理要求の増加によって生じたトランザクションの実行の滞留であると判断すると、サーバアプリケーションの同時処理可能数の追加、追加の情報採取を行う。また、障害対応部１８は、待ち行列理論を利用して、最適なサーバアプリケーションの多重度（処理単位の数の上限および下限）を設定するなどしてもよい。
【００９５】
次に動作を説明する。
【００９６】
先ず、トランザクションの処理要求を受け付けた際のサーバコンピュータ１の動作を説明する。図７は、この動作を説明するためのシーケンス図である。
【００９７】
リクエスト受付部１２は、クライアント端末２からトランザクションの処理要求を受け付けると、ステップＳ１を実行する。
【００９８】
ステップＳ１では、リクエスト受付部１２は、処理要求内のトランザクション識別子と、処理要求を受け付けた旨の受付情報とを情報管理部１６のリクエスト管理部１６１に出力する。
【００９９】
リクエスト管理部１６１は、トランザクション識別子および受付情報を受け付けると、保持している対応情報から、そのトランザクション識別子に対応するサーバアプリケーション識別子を割り出し、そのサーバアプリケーション識別子を管理表記憶部１１内の受付情報管理表から検索する。
【０１００】
リクエスト管理部１６１は、そのサーバアプリケーション識別子を見つけると、そのサーバアプリケーション識別子に対応する直近受付回数をインクリメントする。また、リクエスト管理部１６１は、そのサーバアプリケーション識別子が見つからないと、そのサーバアプリケーションを有する受付情報管理表の行を生成する。このとき、リクエスト管理部１６１は、その行内の平均受付回数を０とし、直近受付回数を１とし、滞留数を０とする。
【０１０１】
また、リクエスト管理部１６１は、単位時間ごとに、受付情報管理表の平均受付回数を更新する。例えば、リクエスト管理部１６１は、直近受付回数を平均受付回数に加算し、その加算結果を２で除算する。リクエスト管理部１６１は、その除算結果を新しい平均受付回数として計測し、受付情報管理表の平均受付回数を、その新しい平均受付回数に更新する。なお、リクエスト管理部１６１は、この処理をサーバアプリケーション識別子ごとに行う。
【０１０２】
また、リクエスト受付部１２は、トランザクション識別子および受付情報を出力すると、ステップＳ２を実行する。
【０１０３】
ステップＳ２では、リクエスト受付部１２は、処理要求をキュー制御部１３に出力する。
【０１０４】
キュー制御部１３は、処理要求を受け付けると、その処理要求を、処理要求内のトランザクション識別子にて特定されるトランザクションの種別の待ち行列に滞留する。キュー制御部１３は、処理要求を滞留すると、ステップＳ３を実行する。
【０１０５】
ステップＳ３では、キュー制御部１３は、処理要求内のトランザクション識別子と、処理要求を滞留した旨の滞留情報とを情報管理部１６のリクエスト管理部１６１に出力する。
【０１０６】
リクエスト管理部１６１は、トランザクション識別子および滞留情報を受け付けると、保持している対応情報から、そのトランザクション識別子に対応するサーバアプリケーション識別子を割り出し、そのサーバアプリケーション識別子を管理表記憶部１１内の受付情報管理表から検索する。リクエスト管理部１６１は、その検索されたサーバアプリケーション識別子に対応する滞留数をインクリメントして、ステップＳ３を終了する。
【０１０７】
また、トランザクション制御部１５は、定期的にステップＳ４を実行する。
【０１０８】
ステップＳ４では、トランザクション制御部１５は、アプリケーション識別子ごとに、空きスレッドを確認する旨の確認要求を情報管理部１６内の状態管理部１６３に出力する。確認要求は、そのアプリケーション識別子を含む。
【０１０９】
状態管理部１６３は、確認要求を受け付けると、その確認要求内のアプリケーション識別子を管理表記憶部１１内の状態管理表から全て検索する。状態管理部１６３は、その検索されたアプリケーション識別子に対応付けられた実行開始時刻の中で、クリアされた実行開始時刻があるか否かを確認する。状態管理部１６３は、クリアされた実行開始時刻があると、空きスレッドがあることを示す確認結果を生成し、クリアされた実行開始時刻がないと、空きスレッドがないことを示す確認結果を生成する。確認結果は、確認要求内のサーバアプリケーションを含む。
【０１１０】
状態管理部１６３は、その確認結果をトランザクション制御部１５に出力する。
【０１１１】
トランザクション制御部１５は、確認結果を受け付けると、その確認結果を確認する。トランザクション制御部１５は、その確認結果が空きスレッドがあることを示すと、サーバアプリケーション部１４にてトランザクションが新たに実行可能であると判断し、ステップＳ５を実行する。一方、トランザクション制御部１５は、その確認結果が空きスレッドがないことを示すと、サーバアプリケーション部１４にてトランザクションが新たに実行可能ではないと判断し、処理を終了する。
【０１１２】
ステップＳ５では、トランザクション制御部１５は、確認結果内のサーバアプリケーション識別子にて特定されるサーバプリケーションが実行可能な種別のトランザクションに応じた処理要求を、キュー制御部１３の待ち行列から取得する。
【０１１３】
例えば、トランザクション制御部１５は、対応情報を保持し、対応情報から、確認結果内のサーバアプリケーション識別子に対応するトランザクション識別子を割り出す。そして、トランザクション制御部１５は、そのトランザクション識別子にて特定されるトランザクションの種別の待ち行列から、その待ち行列内の処理要求を一つ取得する。
【０１１４】
トランザクション制御部１５は、処理要求を取得すると、ステップＳ６を実行する。
【０１１５】
ステップＳ６では、トランザクション制御部１５は、その処理要求内のトランザクション識別子と、滞留数が減少した旨の減少情報とを情報管理部１６のリクエスト管理部１６１に出力する。
【０１１６】
リクエスト管理部１６１は、トラザクション識別子および減少情報を受け付けると、保持している対応情報から、そのトランザクション識別子に対応するサーバアプリケーション識別子を割り出し、そのサーバアプリケーション識別子を管理表記憶部１１内の受付情報管理表から検索する。リクエスト管理部１６１は、その検索されたサーバアプリケーション識別子に対応する滞留数をディクリメントする。
【０１１７】
また、トランザクション制御部１５は、トランザクション識別子および減少情報を出力すると、ステップＳ７を実行する。
【０１１８】
ステップＳ７では、トランザクション制御部１５は、処理要求をサーバアプリケーション部１４に出力する。
【０１１９】
サーバアプリケーション部１４は、処理要求を受け付けると、その処理要求内のトランザクション識別子にて特定されるトランザクションを、そのトランザクションに対応するサーバアプリケーションの空きスレッドで実行する。
【０１２０】
そして、サーバアプリケーション部１４は、トランザクションの実行を開始した旨の開始情報をトランザクション制御部１５に出力する。なお、開始情報は、実行を開始したトランザクションの種別を特定するトランザクション識別子と、そのトランザクションを実行したスレッドを特定する処理識別子（サーバアプリケーション識別子および処理単位識別子）とを含む。
【０１２１】
トランザクション制御部１５は、開始情報を受け付けると、ステップＳ８を実行する。
【０１２２】
ステップＳ８では、トランザクション制御部１５は、現在の時刻を実行開始時刻として計測し、その実行開始時刻と、開始情報内のトランザクション識別子および処理識別子を情報管理部１６内の状態管理部１６３に出力する。
【０１２３】
状態管理部１６３は、実行開始時刻、トランザクション識別子および処理識別子を受け付けると、その処理識別子を管理表記憶部１１内の状態管理表から検索する。状態管理部１６３は、その処理識別子を見つけると、その処理識別子に、その実行開始時刻およびトランザクション識別子を対応付けて、管理表記憶部１１に記憶して、ステップＳ８を終了する。
【０１２４】
また、サーバアプリケーション部１４は、ステップＳ７で実行を開始したトランザクションが終了すると、ステップＳ９を実行する。
【０１２５】
ステップＳ９では、サーバアプリケーション部１４は、トランザクションの実行を終了した旨の終了情報と、そのトランザクションに応じた応答情報をトランザクション制御部１５に出力する。なお、終了情報は、トランザクションを実行していた処理単位を特定する処理識別子を含む。トランザクション制御部１５は、終了情報および応答情報を受け付けると、ステップＳ１０を実行する。
【０１２６】
ステップＳ１０では、トランザクション制御部１５は、現在の時刻を実行終了時刻として計測し、その実行終了時刻と、終了情報内の処理識別子を情報管理部１６内の実行時間管理部１６２に出力する。
【０１２７】
実行時間管理部１６２は、実行終了時刻および処理識別子を受け付けると、実行開始時刻を取得する旨の取得要求を状態管理部１６３に出力する。なお、取得要求は、その処理識別子を含む。
【０１２８】
状態管理部１６３は、取得要求を受け付けると、その取得要求内の処理識別子に対応するトランザクション識別子および実行開始時刻を、管理表記憶部１１内の状態管理表から取得する。状態管理部１６３は、その取得したトランザクション識別子および実行開始時刻を実行時間管理部１６２に出力する。状態管理部１６３は、トランザクション識別子および実行開始時刻を出力すると、管理表記憶部１１内の状態管理表から、その取得要求内の処理識別子に対応するトランザクション識別子および実行開始時刻をクリアする。
【０１２９】
実行時間管理部１６２は、トランザクション識別子および実行開始時刻を受け付けると、その実行開始時刻から実行終了時刻までの時間を実行時間として計測する。
【０１３０】
実行時間管理部１６２は、そのトランザクション識別子を管理表記憶部１１内の実行時間管理表から検索する。
【０１３１】
実行時間管理部１６２は、そのトランザクション識別子が見つかると、そのトランザクション識別子に対応する直近合計時間にその計測した実行時間を加算し、かつ、そのトランザクション識別子に対応する直近実行回数をインクリメントする。また、実行時間管理部１６２は、そのトランザクション識別子が見つからないと、そのトランザクション識別子を有する実行時間管理表の行を生成する。このとき、実行時間管理部１６２は、その行内の、全実行回数を０とし、全合計時間を０とし、直近実行回数を１とし、直近合計時間を、計測した実行時間とする。
【０１３２】
また、実行時間管理部１６２は、単位時間ごとに、実行時間管理表の全合計時間および全実行回数を更新する。例えば、実行時間管理部１６２は、直近合計時間を全合計時間に加算し、直近実行回数を全実行回数に加算する。なお、実行時間管理部１６２は、この処理をトランザクション識別子ごとに行う。
【０１３３】
また、トランザクション制御部１５は、実行終了時刻および処理識別子を情報管理部１６内の実行時間管理部１６２に出力すると、ステップＳ１１を実行する。
【０１３４】
ステップＳ１１では、トランザクション制御部１５は、ステップＳ９で受け付けた応答情報を、キュー制御部１３を介してリクエスト受付部１２に出力する。リクエスト受付部１２は、応答情報を受け付けると、ステップＳ１２を実行する。
【０１３５】
ステップＳ１２では、リクエスト受付部１２は、応答情報をクライアント端末２に送信して、処理を終了する。
【０１３６】
次に、トランザクションの遅延障害の原因を分析する際のサーバコンピュータ１の動作について説明する。図８は、この動作を説明するためのシーケンス図である。
【０１３７】
ステップＳ１０１では、障害分析部１７は、運用管理者などから分析要求を受け付ける。その後、ステップＳ１０２が実行される。
【０１３８】
ステップＳ１０２では、障害分析部１７は、管理表記憶部１１内のリクエスト管理表から、分析要求内のサーバアプリケーション識別子を検索する。障害分析部１７は、その検索されたサーバアプリケーション識別子に対応する滞留数が０以下か否かを確認する。障害分析は、その滞留数が０以下であると、ステップＳ１０３を実行し、その滞留数が１以上であると、ステップＳ１０５を実行する。
【０１３９】
ステップＳ１０３では、障害分析部１７は、管理表記憶部１１内の状態管理表から、対象サーバアプリケーション識別子を全て検索し、その検索された対象サーバアプリケーション識別子に対応する実行開始時刻の中で、クリアされた実行開始時刻があるか否かを確認する。障害分析部１７は、クリアされている実行開始時刻があると、空きスレッドがあると判断し、クリアされている実行開始時刻がないと、空きスレッドがないと判断する。
【０１４０】
障害分析部１７は、空きスレッドがあると、ステップＳ１０４を実行し、空きスレッドがないと、ステップＳ１０５を実行する。なお、ステップＳ１０３は、スキップされてもよい。
【０１４１】
ステップＳ１０４では、障害分析部１７は、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加であると判断し、その判断結果を遅延障害の原因の分析結果として障害対応部１８に出力する。障害対応部１８は、分析結果を受け付けると、ステップＳ１１１を実行する。なお、分析結果は、対象サーバアプリケーション識別子を含む。
【０１４２】
また、ステップＳ１０５では、障害分析部１７は、管理表記憶部１１内の状態管理表から、対象サーバアプリケーション識別子に対応する実行開始時刻を全て取得する。障害分析部１７は、実行開始時刻ごとに、現在時刻から実行開始時刻を減算して実行中時間を算出する。障害分析部１７は、その実行中時間の中で、基準時間以上の実行中時間があるか否かを判断する。障害分析部１７は、基準時間以上の実行中時間があると、ステップＳ１０６を実行し、基準時間以上の実行中時間がないと、ステップＳ１０７を実行する。
【０１４３】
ステップＳ１０６では、障害分析部１７は、トランザクションの遅延障害の原因が、トランザクションのストールによって生じたトランザクションの実行の滞留であると判断し、その判断結果を遅延障害の原因の分析結果として障害対応部１８に出力する。障害対応部１８は、分析結果を受け付けると、ステップＳ１１１を実行する。
【０１４４】
また、ステップＳ１０７では、障害分析部１７は、保持している対応情報から、対象アプリケーション識別子に対応する対象トランザクション識別子を割り出し、その対象トランザクション識別子に対応する、全合計時間、全実行回数、直近合計時間および直近実行回数を管理表記憶部１１内の実行時間管理表から取得する。
【０１４５】
障害分析部１７は、全合計時間を全実行回数で除算して全平均実行時間を算出し、また、直近合計時間を直近実行回数で除算して直近平均実行時間を算出する。障害分析部１７は、直近平均実行時間の全平均実行時間に対する増加度合を算出する。例えば、障害分析部１７は、直近平均実行時間および全平均実行時間の比率または差分を増加度合として算出する。
【０１４６】
そして、障害分析部１７は、増加度合が設定値以上か否かを判断する。障害分析部１７は、増加度合が設定値以上であると、ステップＳ１０８を実行し、増加度合が設定値未満であると、ステップＳ１０９を実行する。
【０１４７】
ステップＳ１０８では、障害分析部１７は、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加であり、その結果、トランザクションの実行の滞留も発生していると判断する。障害分析部１７は、その判断結果を遅延障害の原因の分析結果として障害対応部１８に出力する。障害対応部１８は、分析結果を受け付けると、ステップＳ１１１を実行する。
【０１４８】
ステップＳ１０９では、障害分析部１７は、管理表記憶部１１から対象サーバアプリケーション識別子に対応する直近受付回数および平均受付回数を取得し、その直近受付回数の平均受付回数に対する増加度合を算出する。例えば、障害分析部１７は、直近受付回数および平均受付回数の比率または差分を増加度合として算出する。
【０１４９】
障害分析部１７は、その増加度合が基準値以上か否かを判断する。障害分析部１７は、その増加度合が基準値以上であると、ステップＳ１１０を実行し、その増加度合が基準値未満であると、処理を終了する。
【０１５０】
ステップＳ１１１では、障害分析部１７は、トランザクションの遅延障害の原因が、処理要求の増加によって生じたトランザクションの実行の滞留であると判断し、その判断結果を遅延障害の原因の分析結果として障害対応部１８に出力する。障害分析結果を受け付けると、ステップＳ１１１を実行する。
【０１５１】
ステップＳ１１１では、障害対応部１８は、障害分析部１７の分析結果に応じた、トランザクションの遅延障害に対する対処を行う。
【０１５２】
例えば、障害対応部１８は、分析結果がトランザクションの実行時間の増加を示すと、運用管理者への通知や、サーバアプリケーションの処理能力増強、追加の情報採取などを行う。
【０１５３】
また、障害対応部１８は、分析結果がトランザクションのストールによって生じたトランザクションの実行の滞留を示すと、サーバアプリケーションの同時処理可能数の追加、追加の情報採取およびストール状態のトランザクションの強制終了などを行なう。
【０１５４】
また、障害対応部１８は、分析結果が処理要求の増加によって生じたトランザクションの実行の滞留を示すと、サーバアプリケーションの同時処理可能数の追加、追加の情報採取を行う。また、障害対応部１８は、待ち行列理論を利用して、最適なサーバアプリケーションの多重度（処理単位の数の上限および下限）を設定するなどしてもよい。
【０１５５】
なお、本実施形態において、サーバコンピュータ１は、複数のコンピュータにて構成されていてもよい。例えば、障害分析部１７がサーバコンピュータ１に接続された他のコンピュータにて構成され、障害分析装置として動作し、遅延障害の分析結果をサーバコンピュータ１の障害対応部１８に通知してもよい。同様に、他の各部（障害対応部１８など）も他のコンピュータにて構成されていてもよい。
【０１５６】
次に効果を説明する。
【０１５７】
本実施形態によれば、トランザクション制御部１５は、サーバアプリケーション部１４がトランザクションの実行を開始した実行開始時刻を計測する。リクエスト管理部１６１は、キュー制御部１３の待ち行列に滞留されている処理要求の滞留数を計測する。管理表記憶部１１は、実行開始時刻および滞留数を記憶する。障害分析部１７は、管理表記憶部１１に記憶された情報に基づいて、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加か、それとも、トランザクションの実行の滞留かを分析する。
【０１５８】
この場合、トランザクションの遅延障害の原因が、実行開始時刻および滞留数に基づいて、トランザクションの実行時間の増加か、それとも、トランザクションの実行の滞留かが分析される。
【０１５９】
このため、遅延障害の原因を分析することが可能になる。
【０１６０】
また、本実施形態では、状態管理部１６３は、サーバアプリケーション部１４がトランザクションの実行を終了すると、管理表記憶部１１に記憶された実行開始時刻をクリアする。障害分析部１７は、滞留数が１以上であり、かつ、管理表記憶部１１の中に現在時刻までの時間が基準時間以上となる実行開始時刻があると、トランザクションの遅延障害の原因が、トランザクションのストールによって生じたトランザクションの実行の滞留であると判断する。
【０１６１】
この場合、トランザクションの実行の滞留の原因を分析することが可能になり、より詳細な遅延障害の分析が可能になる。
【０１６２】
また、本実施形態では、滞留数が１以上であり、かつ、管理表記憶部１１の中に現在時刻までの時間が基準時間以上となる実行開始時刻があると、トランザクションの遅延障害の原因が、その実行開始時刻に対応する処理識別子にて特定される処理単位におけるトランザクションのストールによって生じた、トランザクションの実行の滞留であると判断する。
【０１６３】
この場合、トランザクションのストールが発生した処理単位まで、トランザクションの遅延障害の原因を分析することが可能になり、より詳細な遅延障害の分析が可能になる。
【０１６４】
また、本実施形態では、リクエスト管理部１６１は、直近受付回数と平均受付回数とを計測する。障害分析部１７は、滞留数が１以上であり、かつ、直近受付回数の平均値受付回数に対する増加度合が基準値以上であると、トランザクション装置の遅延障害の原因が、処理要求の増加によって生じたトランザクションの実行の滞留であると判断する。
【０１６５】
この場合、トランザクションの実行の滞留の原因を分析することが可能になり、より詳細な遅延障害の分析が可能になる。
【０１６６】
実行時間管理部１６２は、直近合計時間、全合計時間、直近実行回数および全実行回数を計測する。障害分析部１７は、直近合計時間を直近実行回数で除算して、直近平均実行時間を算出する。また、障害分析部１７は、全合計時間を全実行回数で除算して全平均実行時間を算出する。障害分析部１７は、滞留数が１以上であり、直近平均実行時間の全平均実行時間に対する増加度合が設定値以上であると、トランザクションの遅延障害の原因が、実行時間の増加であり、その結果、トランザクションの実行の滞留も発生していると判断する。
【０１６７】
この場合、トランザクションの実行時間の増加と、その結果発生するトランザクションの実行の滞留も分析することが可能になり、より詳細な遅延障害の分析が可能になる。
【０１６８】
また、本実施形態では、障害分析部１７は、その滞留数が０であると、トランザクションの原因が実行時間の増加であると判断する。
【０１６９】
この場合、トランザクションを構成する処理ごとに閾値を設けなくても、トランザクションの原因が実行時間の増加であることを分析することが可能になる。
【０１７０】
また、本実施形態では、障害分析部１７は、リセット要求を受け付けると、管理表記憶部１１に記憶された情報をリセットする。
【０１７１】
この場合、例えば、運用管理者がサーバコンピュータ１の稼動環境に変化があった場合にリセット要求を入力すれば、新しい環境に即した遅延障害の原因の分析を行うことが可能になる。
【０１７２】
また、本実施形態では、障害分析手段は、分析要求を受け付けると、トランザクションの遅延障害の原因を分析する。
【０１７３】
この場合、任意のタイミングでトランザクションの遅延障害の原因を分析することが可能になる。
【０１７４】
また、本実施形態では、障害対応部１８は、障害分析部１７の分析結果に応じて、遅延障害に対する対処を行う。
【０１７５】
この場合、遅延障害の運用管理者への通知や、遅延障害の復旧などを行うことが可能になる。
【０１７６】
次に第二の実施形態について説明する。本実施形態では、本発明によるサーバコンピュータ１（トランザクション装置）の最も簡単な構成例について説明する。なお、サーバコンピュータは、サーバアプリケーションを一つだけ有し、トランザクションの種別も一つであるとする。また、サーバコンピュータ１は、サーバアプリケーションを一つだけ有するものとする。
【０１７７】
図９は、本実施形態のサーバコンピュータ１の構成を示したブロック図である。なお、図９において、図２と同じ機能を有する構成には、同じ符号が付してある。
【０１７８】
図９において、サーバコンピュータ１は、管理表記憶部１１と、リクエスト受付部１２と、キュー制御部１３と、サーバアプリケーション部１４と、トランザクション制御部１５と、リクエスト管理部１６１と、障害分析部１７とを含む。
【０１７９】
リクエスト受付部１２は、トランザクションの処理要求を受け付ける。
【０１８０】
キュー制御部１３は、リクエスト受付部１２が受け付けた処理要求を待ち行列に保持する。
【０１８１】
サーバアプリケーション部１４は、トランザクションを新たに実行することが可能になると、キュー制御部１３の待ち行列に保持された処理要求に応じたトランザクションを実行する。
【０１８２】
トランザクション制御部１５は、サーバアプリケーション部１４がトランザクションの実行を開始した時刻を実行開始時刻として計測し、その実行開始時刻を管理表記憶部１１に記憶する。
【０１８３】
リクエスト管理部１６１は、キュー制御部１３の待ち行列が保持している処理要求の滞留数を計測し、その滞留数を管理表記憶部１１に記憶する。
【０１８４】
障害分析部１７は、管理表記憶部１１に記憶された実行開始時刻および滞留数に基づいて、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加か、トランザクションの実行の滞留か、それとも、トランザクションの実行の滞留かを分析する。
【０１８５】
例えば、障害分析部１７は、滞留数が０未満であると、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加と判断する。また、障害分析部１７は、滞留数が１以上であり、かつ、管理表記憶部１１の中に現在時刻までの時間が基準時間以上となる実行開始時刻が記憶されていると、トランザクションの遅延障害の原因が、トランザクションの実行の滞留と判断する。
【０１８６】
次に効果を説明する。
【０１８７】
本実施形態でも、トランザクション制御部１５は、サーバアプリケーション部１４がトランザクションの実行を開始した実行開始時刻を計測する。リクエスト管理部１６１は、キュー制御部１３の待ち行列に滞留されている処理要求の滞留数を計測する。管理表記憶部１１は、実行開始時刻および滞留数を記憶する。障害分析部１７は、管理表記憶部１１に記憶された情報に基づいて、トランザクションの遅延障害の原因が、トランザクションの実行時間の増加か、それとも、トランザクションの実行の滞留かを分析する。
【０１８８】
したがって、本実施形態でも、遅延障害の原因を分析することが可能になる。
【０１８９】
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
【図面の簡単な説明】
【０１９０】
【図１】第一の実施形態のトランザクションシステムを示したブロック図である。
【図２】第一の実施形態のサーバコンピュータの構成を示したブロック図である。
【図３】トランザクション実行時間管理表の一例を示した説明図である。
【図４】リクエスト受付情報管理表の一例を示した説明図である。
【図５】サーバアプリケーション状態管理表の一例を示した説明図である。
【図６】情報管理部の構成例を示したブロック図である。
【図７】トランザクションの処理要求を受け付けた際のサーバコンピュータ１の動作を説明するためのシーケンス図である。
【図８】トランザクションの遅延障害の原因を分析する際のサーバコンピュータ１の動作を説明するためのシーケンス図である。
【図９】第二の実施形態のサーバコンピュータの構成を示したブロック図である。
【符号の説明】
【０１９１】
１        サーバコンピュータ（トランザクション装置）
２        クライアント端末
３        運用管理端末
１１      管理表記憶部
１２      リクエスト受付部
１３      キュー制御部
１４      サーバアプリケーション部
１５      トランザクション制御部
１６      情報管理部
１７      障害分析部
１８      障害対応部
【図１】
0004983636.tif 000002
【図２】
0004983636.tif 000003
【図３】
0004983636.tif 000004
【図４】
0004983636.tif 000005
【図５】
0004983636.tif 000006
【図６】
0004983636.tif 000007
【図７】
0004983636.tif 000008
【図８】
0004983636.tif 000009
【図９】
0004983636.tif 000010