(57)【要約】システムは、プロセスのパフォーマンスに基づいて、アプリケーションのプロセスの検出と計装を実行する。システムは、プロセスの継続時間と当該プロセスを含むトランザクションのトランザクション時間との関係を示すプロセスの継続時間スコアを決定し；計装閾値を決定し；継続時間スコアが計装閾値を満たしているかどうかを決定し；継続時間スコアが計装閾値を満たしているとの決定に応じて、第２のトランザクションの第２のトランザクション追跡で第２のプロセスの実行が検出されたときに第２のプロセスの第２の継続時間を受け取るように、プロセスによって呼び出される第２のプロセスを計装するように構成された１つまたは複数のプロセッサを備える。いくつかの実施形態では、システムは、主にサブプロセスを呼び出す、したがってパフォーマンス監視にとって重要ではない、計装されたプロセスをプルーニングする。
2020524344.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを監視するシステムであって、
前記アプリケーションの１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成し、前記コードグラフは、前記プロセス間の呼び出し関係を表し、
前記プロセスの実行時に前記プロセスの継続時間を受け取るように前記コードグラフのプロセスを計装し、
前記プロセスを含むトランザクションの実行を示すトランザクション追跡を検出し、
前記プロセスの継続時間と前記トランザクションのトランザクション時間との間の関係を示す前記プロセスの継続時間スコアを決定し、
計装閾値を決定し、
前記継続時間スコアが前記計装閾値を満たしているかどうかを決定し、
前記継続時間スコアが前記計装閾値を満たしていると決定することに応じて、
前記コードグラフの参照に基づいて、前記プロセスによって呼び出される第２のプロセスを決定し、
第２のトランザクションの第２のトランザクション追跡で前記第２のプロセスの実行が検出されたときに前記第２のプロセスの第２の継続時間を受け取るように前記第２のプロセスを計装する
よう構成された１つまたは複数のプロセッサを備えた、システム。
【請求項２】
前記１つまたは複数のプロセッサは、
前記第２のトランザクションの実行を示す前記第２のトランザクション追跡を検出し、前記第２のトランザクション追跡は、前記プロセスと前記第２のプロセスを呼び出す前記第１のプロセスをともなう前記第２のプロセスとを含み、
前記第２のプロセスの第２の継続時間と前記プロセスの継続時間との関係を示す前記第２のプロセスの第２の継続時間スコアを決定し、
前記第２の継続時間スコアが前記計装閾値を満たすかどうかを決定し、
前記第２の継続時間スコアが前記計装閾値を満たしていると決定することに応じて、
前記コードグラフを参照することに基づいて、前記第２のプロセスによって呼び出される第３のプロセスを決定し、
第３のトランザクションの第３のトランザクション追跡で前記第３のプロセスの実行が検出されるとき前記第３のプロセスの第３の継続時間を受け取るように、前記第３のプロセスを計装する
ようさらに構成されている、請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のプロセッサは、
前記第２のトランザクション追跡について情報ディスプレイを生成し、
前記プロセス、前記プロセスの前記継続時間スコア、前記プロセスによって呼び出される前記第２のプロセス、および前記第２のプロセスの前記第２の継続時間スコアのインジケーションを前記情報ディスプレイに提供する
ようさらに構成されている、請求項２に記載のシステム。
【請求項４】
前記１つまたは複数のプロセッサは、
前記第３のトランザクションの実行を示す前記第３のトランザクション追跡を検出し、前記第３のトランザクション追跡は、前記プロセス、前記第２のプロセス、および前記第３のプロセスを含み、前記第１のプロセスは前記第２のプロセスを呼び出し、前記第２のプロセスは前記第３のプロセスを呼び出し、
前記第３のプロセスの前記第３の継続時間と前記第２のプロセスの前記第２の継続時間との関係を示す前記第３のプロセスの第３の継続時間スコアを決定し、
プルーニング閾値を決定し、
前記第３の継続時間スコアがプルーニング閾値を満たすかどうかを決定し、
前記第３の継続時間スコアがプルーニング閾値を満たしていると決定されることに応答して、
前記第２のプロセスの計装をしないで、第４のトランザクションの第４のトランザクション追跡で前記第２のプロセスの実行が検出されるとき、前記第２のプロセスに前記第２のプロセスの前記第２の継続時間を返させないようにする
ようにさらに構成されている、請求項２に記載のシステム。
【請求項５】
前記１つまたは複数のプロセッサは、
前記第３のトランザクション追跡について情報ディスプレイを生成し、
前記プロセスの前記継続時間スコア、前記プロセスによって呼び出される前記第３のプロセス、および前記第３のプロセスの前記第３の継続時間スコアのインジケーションを前記情報ディスプレイに提供する
ようにさらに構成されている、請求項４に記載のシステム。
【請求項６】
前記１つまたは複数のプロセッサは、
前記トランザクション追跡について情報ディスプレイを生成し、
前記プロセスおよび前記プロセスの前記継続時間スコアのインジケーションを前記情報ディスプレイに提供する
ようにさらに構成されている、請求項１に記載のシステム。
【請求項７】
前記第２のプロセスを計装するように構成された前記１つまたは複数のプロセッサは、前記アプリケーションを監視するエージェントに命令を送信し、前記エージェントに前記第２のプロセスにコードを追加させて、前記第２のプロセスが実行されたときに前記第２のプロセスに前記第２の継続時間を返させるように構成された前記１つまたは複数のプロセッサを含む、請求項１に記載のシステム。
【請求項８】
前記１つまたは複数のプロセッサは、ユーザ入力からの計装スコア閾値を受信する
ようにさらに構成されている、請求項１に記載のシステム。
【請求項９】
前記プロセスは前記アプリケーションの第１のパッケージに属し、前記第２のプロセスは前記第１のパッケージと異なる前記アプリケーションの第２のパッケージに属する、請求項１に記載のシステム。
【請求項１０】
前記１つまたは複数のプロセッサは、
ユーザ入力からの前記アプリケーションの前記１つまたは複数のパッケージの選択を受信し、前記ユーザ入力に基づいて前記コードグラフを生成し、前記１つまたは複数のパッケージは前記アプリケーションの全パッケージのサブセットである
ようにさらに構成されている、請求項１に記載のシステム。
【請求項１１】
前記１つまたは複数のプロセッサは、
前記継続時間スコアが前記計装閾値を満たさないと決定することに応じて、前記プロセスによって呼び出される前記第２のプロセスの計装を控える
ようにさらに構成されている、請求項１に記載のシステム。
【請求項１２】
アプリケーションを監視する方法であって、
実行している前記アプリケーションの１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成することであり、前記コードグラフは、前記プロセス間の呼び出し関係を表す、ことと、
前記プロセスの実行時に前記プロセスの継続時間を受け取るように前記コードグラフのプロセスを計装することと、
前記アプリケーションを監視して前記プロセスを含むトランザクションの実行を示すトランザクション追跡を検出することと、
前記プロセスの継続時間と前記トランザクションのトランザクション時間との間の関係を示す前記プロセスの継続時間スコアを決定することと、
計装閾値を決定することと、
前記継続時間スコアが前記計装閾値を満たしているかどうかを決定することと、
前記継続時間スコアが前記計装閾値を満たしていると決定することに応じて、
前記コードグラフの参照に基づいて、前記プロセスによって呼び出される第２のプロセスを決定することと、
第２のトランザクションの第２のトランザクション追跡で前記第２のプロセスの実行が検出されたときに前記第２のプロセスの第２の継続時間を受け取るように前記第２のプロセスを計装することと
を含む、方法。
【請求項１３】
前記第２のトランザクションの実行を示す前記第２のトランザクション追跡を検出することであり、前記第２のトランザクション追跡は、前記プロセスと前記第２のプロセスを呼び出す前記第１のプロセスをともなう前記第２のプロセスとを含む、ことと、
前記第２のプロセスの第２の継続時間と前記プロセスの継続時間との関係を示す前記第２のプロセスの第２の継続時間スコアを決定することと、
前記第２の継続時間スコアが前記計装閾値を満たすかどうかを決定することと、
前記第２の継続時間スコアが前記計装閾値を満たしていると決定することに応じて、
前記コードグラフを参照することに基づいて、前記第２のプロセスによって呼び出される第３のプロセスを決定することと、
第３のトランザクションの第３のトランザクション追跡で前記第３のプロセスの実行が検出されるとき前記第３のプロセスの第３の継続時間を受け取るように、前記第３のプロセスを計装することと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記第２のトランザクション追跡について情報ディスプレイを生成することと、
前記プロセス、前記プロセスの前記継続時間スコア、前記プロセスによって呼び出される前記第２のプロセス、および前記第２のプロセスの前記第２の継続時間スコアのインジケーションを前記情報ディスプレイに提供することと
をさらに、請求項１３に記載の方法。
【請求項１５】
前記第３のトランザクションの実行を示す前記第３のトランザクション追跡を検出することであり、前記第３のトランザクション追跡は、前記プロセス、前記第２のプロセス、および前記第３のプロセスを含み、前記第１のプロセスは前記第２のプロセスを呼び出し、前記第２のプロセスは前記第３のプロセスを呼び出す、ことと、
前記第３のプロセスの前記第３の継続時間と前記第２のプロセスの前記第２の継続時間との関係を示す前記第３のプロセスの第３の継続時間スコアを決定することと、
プルーニング閾値を決定することと、
前記第３の継続時間スコアがプルーニング閾値を満たすかどうかを決定することと、
前記第３の継続時間スコアがプルーニング閾値を満たしていると決定されることに応答して、
前記第２のプロセスの計装をしないで、第４のトランザクションの第４のトランザクション追跡で前記第２のプロセスの実行が検出されるとき、前記第２のプロセスに前記第２のプロセスの前記第２の継続時間を返させないようにすることと
をさらに含む、請求項１３に記載の方法。
【請求項１６】
前記第３のトランザクション追跡について情報ディスプレイを生成することと、
前記プロセスの前記継続時間スコア、前記プロセスによって呼び出される前記第３のプロセス、および前記第３のプロセスの前記第３の継続時間スコアのインジケーションを前記情報ディスプレイに提供することと
をさらに含む、請求項１５に記載の方法。
【請求項１７】
前記第２のプロセスを計装することは、前記アプリケーションを監視するエージェントに命令を送信し、前記エージェントに前記第２のプロセスにコードを追加させて、前記第２のプロセスが実行されたときに前記第２のプロセスに前記第２の継続時間を返させることを含む、請求項１２に記載の方法。
【請求項１８】
ユーザ入力からの前記アプリケーションの前記１つまたは複数のパッケージの選択および前記ユーザ入力に基づいて前記コードグラフを生成することをさらに含み、前記１つまたは複数のパッケージは前記アプリケーションの全パッケージのサブセットである、請求項１２に記載の方法。
【請求項１９】
前記継続時間スコアが前記計装閾値を満たさないと決定することに応じて、前記プロセスによって呼び出される前記第２のプロセスの計装を控えることをさらに含む、請求項１２に記載の方法。
【請求項２０】
プロセッサによって実行された時に当該プロセッサに、
アプリケーションの１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成し、前記コードグラフは、前記プロセス間の呼び出し関係を表し、
前記プロセスの実行時に前記プロセスの継続時間を受け取るように前記コードグラフのプロセスを計装し、
前記アプリケーションを関して前記プロセスを含むトランザクションの実行を示すトランザクション追跡を検出し、
前記プロセスの継続時間と前記トランザクションのトランザクション時間との間の関係を示す前記プロセスの継続時間スコアを決定し、
計装閾値を決定し、
前記継続時間スコアが前記計装閾値を満たしているかどうかを決定し、
前記継続時間スコアが前記計装閾値を満たしていると決定することに応じて、
前記コードグラフの参照に基づいて、前記プロセスによって呼び出される第２のプロセスを決定し、
第２のトランザクションの第２のトランザクション追跡で前記第２のプロセスの実行が検出されたときに前記第２のプロセスの第２の継続時間を受け取るように前記第２のプロセスを計装する
ように前記プロセッサを構成する命令を格納した非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンピューティングシステム上で実行するアプリケーションの性能監視に関する。
【０００２】
ウェブベースおよびモバイルアプリケーションは、コンテンツおよびサービスをユーザーコンピューティングデバイスに配信するための一般的なツールである。これらのアプリケーションは、コンピューティングデバイスにコンテンツを提供し、コンピューティングデバイスからの要求に応答するアプリケーションサーバによって実行される。アプリケーションの機能の中断を避けるために、アプリケーションサーバは、エージェントなどのプログラムを追加で実行して、サーバおよびアプリケーションを監視し得る。アプリケーションサーバを監視することは、サーバの管理者が、アプリケーションサーバが適切に稼働していることを確認し、アプリケーションにおけるパフォーマンスの問題を検出することを可能にする。
【０００３】
例えば、監視は、アプリケーションのアプリケーションコードを実行するフレームワークまたはアプリケーションサーバを計装して、トランザクション追跡を生成することができる。このようなトランザクション追跡は、アプリケーションサーバまたはフレームワークの計装されたコードの潜在的なパフォーマンスの問題を明らかにすることができるが、アプリケーションコードの個々のプロセス（たとえば、関数またはメソッド）のパフォーマンスは明らかにしない。カスタム計装を使用してアプリケーションコードを計装することは可能であるが（たとえば、アプリケーションをコンパイルしてデプロイの前に、およびコードの特定のプロセスを手動で計装するなど）、これには、どのプロセスがパフォーマンスの問題を引き起こしているかに関する知識が必要である。
【発明の概要】
【０００４】
システムは、プロセス性能に基づいてアプリケーションのプロセスの発見および計装を実行する。いくつかの実施形態では、システムは、アプリケーションの１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成し、コードグラフは、プロセス間の呼び出し関係を表し、コードグラフのプロセスを計装して、プロセスの実行時にプロセスの継続時間を受け取る、１つまたは複数のプロセッサ（たとえば、サーバーの）を含む。１つまたは複数のプロセッサは、プロセスを含むトランザクションの実行を示すトランザクション追跡を検出し、プロセスの継続時間とトランザクションのトランザクション時間との間の関係を示すプロセスの継続時間スコア、計装閾値、および継続時間スコアが計装閾値を満たしているかどうかを決定する。継続時間スコアが計装閾値を満たしていると決定することに応じて、１つまたは複数のサーバは、コードグラフの参照に基づいて、プロセスによって呼び出される第２のプロセスを決定し、第２のトランザクションの第２のトランザクション追跡で第２のプロセスの実行が検出されたとき第２のプロセスの第２の継続時間を受け取るように、第２のプロセスを計装する。
【０００５】
いくつかの実施形態において、システムの１つまたは複数のプロセッサは、第２のトランザクションの実行を示す第２のトランザクション追跡を検出し、第２のトランザクション追跡は、プロセスと第２のプロセスを呼び出す第１のプロセスをともなう第２のプロセスとを含む。１つまたは複数のサーバは、第２のプロセスの第２の継続時間とプロセスの継続時間との関係を示す第２のプロセスの第２の継続時間スコアを決定し、第２の継続時間スコアが計装閾値を満たすかどうかを決定する。第２の継続時間スコアが計装閾値を満たしていると決定することに応答して、１つまたは複数のサーバは、コードグラフを参照することに基づいて、第２のプロセスによって呼び出される第３のプロセスを決定し、第３のトランザクションの第３のトランザクション追跡で第３のプロセスの実行が検出されるとき第３のプロセスの第３の継続時間を受け取るように、第３のプロセスを計装する。
【０００６】
いくつかの実施形態では、システムの１つまたは複数のプロセッサは、第３のトランザクションの実行を示す第３のトランザクション追跡を検出し、第３のトランザクション追跡は、プロセス、第２のプロセス、および第３のプロセスを含み、第１のプロセスは第２のプロセスを呼び出し、第２のプロセスは第３のプロセスを呼び出す。１つまたは複数のサーバは、第３のプロセスの第３の継続時間と第２のプロセスの第２の継続時間との関係を示す第３のプロセスの第３の継続時間スコア、プルーニング閾値、および第３の継続時間スコアがプルーニング閾値を満たすかどうかを決定する。第３の継続時間スコアがプルーニング閾値を満たしていると決定されることに応答して、１つまたは複数のサーバは、第２のプロセスの実行が検出されたときに、第２のプロセスの計装をしないで、第４のトランザクションの第４のトランザクション追跡で第２のプロセスの実行が検出されるとき、第２のプロセスが第２のプロセスの第２の継続時間を返さないようにする。
【０００７】
いくつかの実施形態は、アプリケーションを監視する方法を含み得る。この方法は、実行中のアプリケーションの１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成し、コードグラフが、プロセス間の呼び出し関係を表し、コードグラフのプロセスを計装し、プロセスが実行されるときにプロセスの継続時間を受け取ることを含む。この方法は、アプリケーションを監視して、プロセスを含むトランザクションの実行を示すトランザクション追跡を検出することをさらに含む。この方法は、プロセスの継続時間とトランザクションのトランザクション時間との関係を示すプロセスの継続時間スコア、計装閾値、および継続時間スコアが計装閾値を満たすかどうかを決定することをさらに含む。継続時間スコアが計装閾値を満たしていると決定したことに応答して、この方法は、コードグラフを参照することに基づいて、プロセスによって呼び出された第２のプロセスを決定し、第２のプロセスを計装し、第２のトランザクションの第２のトランザクション追跡で第２のプロセスの実行が検出されるときに、第２のプロセスの第２の継続時間を受け取る。
【０００８】
いくつかの実施形態は、プロセッサによって実行されると、本明細書で説明するアプリケーションを監視するための方法を実行するようにプロセッサを構成する命令を格納する非一時的コンピュータ可読媒体を含む。
【図面の簡単な説明】
【０００９】
【図１】図１は、いくつかの実施形態による、性能監視システムを含むシステム環境のブロック図である。
【図２】図２は、いくつかの実施形態による、アプリケーションサーバ上で実行しているアプリケーションのプロセスを発見および計測する方法のフローチャートである。
【図３】図３は、いくつかの実施形態によるコードグラフの概略図である。
【図４】図４は、いくつかの実施形態によるコードグラフの概略図である。
【図５】図５は、いくつかの実施形態による、トランザクション追跡の情報表示の例である。
【図６】図６は、いくつかの実施形態による、トランザクション追跡の情報表示の例である。
【図７】図７は、いくつかの実施形態による、トランザクション追跡の情報表示の例である。
【図８】図８は、いくつかの実施形態による、アプリケーションサーバ上で実行しているアプリケーションの監視されるプロセスをプルーニングする方法のフローチャートである。
【図９】図９は、いくつかの実施形態による、トランザクション追跡の情報表示の例である。
【図１０】図１０は、いくつかの実施形態による、トランザクション追跡の情報表示１０００の一例である。
【００１０】
図面は、例示のみを目的として本開示の実施形態を示している。当業者は、以下の説明から、本明細書で説明される開示の原理または利益から逸脱することなく、本明細書で説明される構造および方法の代替実施形態を採用できることを容易に認識する。
【発明を実施するための形態】
【００１１】
システム概要
図１は、いくつかの実施形態によるシステム環境１００のブロック図である。
システム１００は、ネットワーク１２４（例えば、インターネット）を介して通信する性能監視システム１０２、アプリケーションシステム１０６、およびクライアントデバイス１０４を含む。性能監視システム１０２は、アプリケーションシステム１０６の１つまたは複数のサーバ１１０によって実行されるアプリケーション１０８の性能を監視および分析する。
【００１２】
アプリケーションシステム１０６は、１つまたは複数のアプリケーションサーバ１１０と１つまたは複数のデータストア１１２とを含む。データストア１１２は、１つまたは複数のアプリケーションサーバ１１０によって実行されるアプリケーション１０８のアプリケーションデータを格納する。アプリケーションサーバ１１０は、アプリケーションサーバ１１０上で実行しているプロセス、アプリケーション１０８の応答時間、アプリケーション１０８のトランザクション、アプリケーション１０８のトランザクションのプロセス、クライアントデバイス１０４でのアプリケーション１０８のパフォーマンスに対するバックエンドプロセスの影響、アプリケーション１０８を実行している仮想マシンの統計、またはその他の情報など、アプリケーション１１５のパフォーマンスを監視する１つまたは複数のエージェント１１４をさらに実行する。一実施形態では、エージェント１１４は、性能情報をアプリケーション１０８のコードパスにリンクする。コードパスは、とりわけ、アプリケーション１０８で実行されているパッケージとプロセスを識別することができる。エージェント１１４は、アプリケーション１０８の性能に関連するデータを収集および格納し、定期的に監視サーバ１４０にデータを報告する。
【００１３】
アプリケーション１０８は、様々なタイプのモバイルアプリケーションまたはウェブアプリケーションのいずれかであり得、クライアントサーバアプリケーションの演算処理のサブセットを表し得る。例えば、アプリケーションサーバ１１０によって演算処理されるアプリケーション１０８は、データベースコンテンツを検索および格納すること、クライアントデバイス１０４でレンダリングするためのユーザインターフェースの生成すること、クライアントデバイス１０４で要求される機能の実行すること、およびクライアントデバイス１０４にコンテンツを通信する（例えば、ネットワーク１２４を介して）こと、など、クライアントサーバアプリケーションのサーバサイドプロセスを含み得る。図１にはアプリケーションサーバ１１０が示されているが、アプリケーションサーバ１１０は、アプリケーション１０８の機能を実行する１つまたは複数のコンピューティングデバイスを備えてもよい。
【００１４】
一部の実施形態では、アプリケーションサーバ１１０は、アプリケーション１０８のプロセスを実行するＪａｖａ仮想マシンを実行するコンピューティングデバイスを含む。仮想マシンは、アプリケーション１０８を実行するための環境を提供し、アプリケーション１０８によって作成されたオブジェクトと、アプリケーション１０８によって使用されるデータストア１１２の一部（メモリなど）を管理する。特に、仮想マシンは、アプリケーション１０８およびエージェント１１４の実行中に作成された変数またはデータ構造を含むオブジェクトをメモリプール間で移動することによりメモリを割り当て、システム１０６の使用可能なメモリを効率的に管理する。また、仮想マシンは、ガベージコレクションプロセスを実行して、アプリケーション１０８で使用または参照されなくなったオブジェクトを特定および削除し、他のオブジェクトを格納するために未使用オブジェクトにより占有されたメモリを解放する。
【００１５】
性能監視システム１０２は、１つまたは複数の性能監視サーバ１２０（すなわち「監視サーバ１２０」）および１つまたは複数のデータリポジトリ１２２を含む。監視サーバ１２０は、エージェント１１４との通信を介してアプリケーションサーバ１１０の性能を監視する１つまたは複数のプロセッサを含む外部コンピューティングデバイスである。 監視サーバ１２０は、アプリケーション監視サービスプロバイダによってホストされてもよく、異なるアプリケーションシステム１０６にわたるアプリケーションサーバ１１０を含む、任意の数のアプリケーションサーバ１１０の性能を監視してもよい。
【００１６】
アプリケーションサーバ１１０を監視するために、監視サーバ１２０は、エージェント１１４をアプリケーションサーバ１１０に提供することができる（例えば、ソフトウェア開発キットとして、またはアプリケーション１１５のソフトウェアに統合されたモジュールとして）。アプリケーションサーバ１１０がエージェント１１４を実行している間、監視サーバ１２０は、エージェント１１４と通信して、アプリケーションサーバ１１０の性能を監視する。監視サーバ１２０は、エージェント１１４からアプリケーション１０８のトランザクション追跡に関するレポートを受信し、アプリケーションサーバ１１０の管理者による分析のための情報表示を生成し、管理者がアプリケーション１０８のパフォーマンス問題に対処できるようにする。例えば、監視サーバ１２０は、トランザクションのトランザクション時間またはアプリケーション１０８のプロセスの継続時間を示すテーブル、チャート、またはプロットを生成する。情報表示は、トランザクション追跡、トランザクションのプロセス呼び出しチェーンの定義、低速またはその他の重要なトランザクションまたはプロセスのインジケーションを含み得、アプリケーション１０８を実行しているサーバおよび／または仮想マシンからの統計を提供する。
【００１７】
図２は、いくつかの実施形態による、アプリケーションサーバ１１０上で実行しているアプリケーション１０８を発見し、計装するプロセスの方法２００のフローチャートである。方法２００は、トランザクション追跡におけるプロセス間の呼び出し関係に基づいて、トランザクションのアプリケーションプロセスのプログラムによる発見を提供する。トランザクション追跡は、呼び出し関係を持つプロセスの実行スタックを定義します。方法２００は、親プロセスと比較してプロセスの継続時間を分析し、遅いプロセスを発見するための実行スタックを続ける。一実施形態では、図２に示されるプロセスのステップは、システム１００のコンポーネントによって実行される。ステップは、異なる順序で実行されてもよく、方法２００は異なるステップを含んでもよく、追加のステップを含んでもよく、またはより少ないステップを含んでもよい。
【００１８】
監視サーバ１２０は、アプリケーションサーバ１１０上で実行しているアプリケーション１０８の１つまたは複数のパッケージに関連付けられたプロセスのコードグラフを生成する２０２。コードグラフは、トランザクション追跡のプロセス間の呼び出し関係を表すデータ構造である。
【００１９】
アプリケーション１０８は、多くのパッケージを含むことができ、各パッケージは複数のプロセス（または「機能」または「メソッド」）を含む。パッケージは、機能的に関連するプロセスのグループを含むことができます。いくつかの実施形態では、監視サーバ１２０による監視のために、監視されているパッケージは、例えばユーザ入力により、またはプログラム的に選択されることができる。一部の実施形態では、監視サーバ１２０は、アプリケーションサーバ１１０で実行されているコードの監視、および監視のために選択されていないアプリケーション１０８のプロセスおよびパッケージのフィルタリングに基づいてコードグラフを構築する。
【００２０】
監視サーバ１２０は、プロセスが実行されるときにプロセスの継続時間を受信するために、コードグラフのプロセスを計装する２０４。この計装は、コードグラフのプロセスの初期計装であり、プロセスによって呼び出される計装サブプロセスのルートプロセスとして使用できる。一例では、１つまたは複数の定義されたプロセスが初期計装ポイントとして使用される。計装ポイントは、アプリケーションのメインプロセスまたはメソッド、あるいは関心のある他のプロセスとし得る。
【００２１】
別の例では、監視サーバ１２０は、トランザクションについてアプリケーション１０８を監視し、トランザクション中の検出された１つまたは複数の選択されたパッケージに属する各プロセスを計装する。アプリケーションサーバ１１０は、アプリケーション１０８を実行して、互いを呼び出す複数のプロセス、それらの呼び出し関係、およびそれらの継続時間を示すトランザクション追跡によって定義されるトランザクションを生成する。エージェント１１４は、トランザクション追跡を検出し、トランザクション追跡を監視サーバ１２０に送信する。監視サーバ１２０は、選択された１つまたは複数のパッケージに属さないトランザクション追跡内のプロセスをフィルタリングし、選択された１つまたは複数のパッケージに属するトランザクション追跡内のプロセスに対して初期計装を実行する。
【００２２】
いくつかの実施形態では、監視サーバ１４０は、命令をエージェント１１４に送信することによりプロセスを計装する。エージェント１１４は、プロセスに計装ポイントを追加し、当該プロセスが実行されたときに当該プロセス（または何らかの他の監視プロセス）がエージェント１１４に当該プロセスの継続時間を返すようにする。
【００２３】
監視サーバ１２０は、計装されたプロセスを含むトランザクションの実行を示すトランザクション追跡を検出する２０６。例えば、監視サーバ１２０は、アプリケーションサーバ１１０がアプリケーション１０８を実行する過程でトランザクションを実行するときに、エージェント１１４からトランザクション追跡を受信する。トランザクション追跡は、トランザクション内の各プロセスのインジケーション、およびプロセス間の呼び出し関係を含むことができる。
【００２４】
一部の実施形態では、監視サーバ１２０は、各プロセスをコードグラフのプロセスと比較して、監視されるパッケージに属する計装プロセスを特定し、さらに計装プロセスのそれぞれを処理して、計装プロセスの起動プロセスを選択的に計装する。たとえば、プロセスのクラス名とプロセス名が、コードグラフ中で識別されたクラス名とプロセス名と比較されることができる。
【００２５】
監視サーバ１２０は、計装閾値を決定する２０８。計装閾値は、プロセスを計装する必要があるかどうかを決定するために使用される。計装値の閾値は、計装されるプロセスによって呼び出される１つまたは複数のサブプロセスの計装を生じさせる継続時間スコアの値を定義する。
【００２６】
監視サーバ１２０は、プロセスの継続時間とトランザクションのトランザクション時間との間の関係を示すプロセスの継続時間スコアを決定する２１０。トランザクション時間は、トランザクション追跡の最初のプロセスの呼び出しとトランザクション追跡の最後のプロセスによる応答との間に定義される時間など、トランザクションの全実行時間を定義する。継続時間は、プロセスの呼び出しとプロセスによる応答との間に定義される時間など、プロセスの実行時間を定義する。継続時間スコアは、プロセスの実行に使用されるトランザクションの実行に使用される全トランザクション時間の一部を表す、トランザクション時間に対する継続時間の比率として計算されることができる。監視サーバ１２０は、トランザクションのトランザクション時間を決定すること、プロセスの継続時間を決定すること、およびトランザクション時間と継続時間に基づいた継続時間スコアの計算に基づいて、プロセスの継続時間スコアを決定する。
【００２７】
いくつかの実施形態では、監視サーバ１２０は、トランザクション時間および／または継続時間などのパフォーマンス情報をエージェント１１４から受信する。いくつかの実施形態では、監視サーバ１２０は、トランザクションで実行される複数のプロセスの継続時間を追加することに基づいてトランザクション時間を計算する。
【００２８】
監視サーバ１２０は、プロセスの継続時間スコアのインジケーションを、トランザクション追跡のための情報表示に提供する２１２。例えば、監視サーバ１２０は、情報表示を含むユーザインターフェースを生成する。ユーザインターフェースは、選択されたパッケージに属するトランザクションの各計装されるプロセス、および計装されるプロセスの継続時間スコアを含み得る。情報表示は、プロセス間の呼び出し関係のインジケーションをさらに含み得る。
【００２９】
監視サーバ１２０は、継続時間スコアが計装閾値を満たすかどうかを決定する２１４。一部の実施形態では、計装閾値は、０．２０（すなわち２０パーセント）に設定される。ここで、継続時間スコア（たとえば、計装されるプロセスの継続時間とトランザクション時間の比によって定義される）が０．２０を超える場合、計装閾値が満たされ、トランザクション内で計装されるプロセスによって呼び出される１つまたは複数のプロセスもまた計装される。別の例では、計装閾値は０．４（すなわち４０パーセント）に設定される。計測閾値は、ユーザ入力によりまたはプログラム的になど調整可能とすることができる。より低い計装閾値は、呼び出されるプロセスの計装の増加およびより多くのプロセス性能の発見となり、他方で、より高い計装閾値は、データ収集量を制限するために利用されることができる。
【００３０】
継続時間スコアが計装閾値を満たすと決定することに応答して、監視サーバ１２０は、コードグラフの参照に基づいて、第２のプロセスを決定する２１６。計装閾値が満たされると、第２のプロセスが計装されるプロセスの継続時間のかなりの部分を占めるため、第２のプロセスも重要性のあるプロセスとなる。計装されるプロセスは、計装閾値を満たす継続時間を各々が有する複数のプロセスを呼び出すことができる。サブクラスの計装は、エージェント１１４によってキャプチャされた次のトランザクション追跡でトランザクションに関するより深い可視性を可能とする。
【００３１】
監視サーバ１２０は、第２のプロセスが第２のトランザクションで実行されるとき第２のプロセスの第２の継続時間を受信するように、第２のプロセスを計装する（２１８）。第２のプロセスは、後続のトランザクションの後続のトランザクション追跡で検出され得る。
【００３２】
いくつかの実施形態では、トランザクション（例えば、すなわち親プロセス）が２０６で検出されたプロセスと同じ呼び出しレベルで第３のプロセスを有する場合、方法２００は２１０に戻り、監視サーバ１２０は、第３のプロセスの継続時間とトランザクションのトランザクション時間との関係を示す第３のプロセスの継続時間スコアを決定する。同様に、第３のプロセスの継続時間スコアが計測閾値を満たしている場合、第３のプロセスのサブプロセスが計測されることができる。
【００３３】
２１４に戻って、継続時間スコアが計装閾値を満たしていないと判断することに応答して、監視サーバ１２０は、計装されたプロセスのサブプロセスの計装を控える２２０。方法２００は２１０に戻り、監視サーバ１２０は、トランザクション追跡で検出された選択されたパッケージに属するトランザクションの別のプロセスの継続時間スコアを決定する。トランザクションが追加の計測プロセスを含まない場合、方法２００は終了する場合がある。トランザクションが別の計装プロセスを含む場合、計装閾値が満たされた場合にステップ２１２−２２０が実行されて他の計装プロセスのサブプロセスを計装し、他の計装プロセスの継続時間スコアをトランザクション追跡の情報ディスプレイに提供する。
【００３４】
方法２００は、計装閾値を満たす第２のプロセスのすべてのサブプロセスが計装されるまで、トランザクション追跡の呼び出し関係のチェーンを横断して、第２のプロセスに対して繰り返すことができる。
【００３５】
図３は、いくつかの実施形態によるコードグラフ３００の概略図である。コードグラフ３００は、パッケージの５つのプロセス間の呼び出し関係を示している。各プロセスは、パッケージ名前空間（“com/fake/third/party/”）、クラス名（“ClassTest$l”、“ClassOne”、“ClassTwo”、“ClassThree”、および“ClassFour”）、並びにプロセス名（“reallyRun”、“classOneWork”、“classTwoWork”、“classThreeWork”、および“classFourWork”）によって参照される。プロセスreallyRunは、プロセスclassOneWorkを呼び出す。プロセスclassOneWorkは、プロセスclassTwoWorkおよびclassThreeWorkを呼び出す。プロセスclassThreeWorkは、プロセスclassFourWorkを呼び出す。
【００３６】
図４は、いくつかの実施形態によるコードグラフ４００の概略図である。コードグラフ４００は、図３のコードグラフ３００によって示されているのと同じ“come/fake/third/party/”パッケージのプロセス間の同じ呼び出し関係を示す。さまざまな種類のデータ構造を使用して、コードグラフを定義または表現することができる。
【００３７】
図５は、いくつかの実施形態による、トランザクション追跡の情報表示５００の例である。情報表示５００は、トランザクション追跡のプロセスに関する情報を提示するためのユーザインターフェースに提供され得る。示されているように、プロセスreallyRunは、継続時間スコアが１（すなわち継続％＝１００％）であり、つまり、reallyRunプロセスはトランザクションの最高レベルのプロセスであることを意味している。情報ディスプレイ５００はさらに、継続時間を２７６０ミリ秒として示している。
【００３８】
図６は、いくつかの実施形態による、トランザクション追跡の情報ディスプレイ６００の例である。情報ディスプレイ６００は、reallyRunプロセスによって呼び出される追加のclassOneWorkサブプロセスを含む。reallyRunプロセスの継続時間スコアは、１（すなわちトランザクション全体に対して１００％の継続）である。計装閾値が０．４の場合、reallyRunプロセスの継続時間スコアは計装閾値を満たす。そのため、サブプロセスclassOneWorkも計装される。情報ディスプレイ６００のトランザクション追跡によって示されるようにreallyRunプロセスが再び実行されるとき、classOneWorkの継続時間スコアなどのパフォーマンス情報も情報ディスプレイ６００に提供される。さらに、classOneWorkは継続時間スコアが１であり（たとえば、呼び出すプロセスreallyRunの１００％の継続）、０．４の計装閾値を超えるため、classOneWorkプロセスのサブプロセスも計装されることができる。
【００３９】
図７は、いくつかの実施形態による、トランザクション追跡の情報ディスプレイ７００の一例である。後続のトランザクション追跡では、classOneWorkの計装されたサブプロセスの継続時間スコアまたはその他のパフォーマンス情報も情報ディスプレイ７００に表示されている。特に、情報ディスプレイ７００は、classOneWorkプロセスによって呼び出される、classTwoWorkおよびclassThreeWorkを含む追加のプロセスを含む。classOneWorkの期間スコアは１で０．２を超えているため、サブプロセスclassTwoWorkおよびclassThreeWorkも計装される。さらに、classTwoWorkの継続時間スコアは．計装閾値（たとえば、０．４）を超える６３６（すなわちclassOneWorkの継続時間の６３．６％の継続時間）であり、サブプロセスclassThreeWorkも計装される。情報表示７００は、classTwoWorkによって呼び出されるプロセスとしてclassThreeWorkをさらに含む。各レベルのプロセスの継続時間スコアは、当該プロセスの継続時間と当該プロセスを呼び出す親プロセスの継続時間の比率として各レベルで定義され、情報ディスプレイにも表示される。
【００４０】
プロセスclassTwoWork、classThreeWork（classTwoWorkによって呼び出される）、およびclassThreeWork（classOneWorkによって呼び出される）は、それぞれ．６３６、.３６４、および.３６４の継続時間スコアを有している。これらの継続時間スコアはそれぞれ０．４の計装閾値を満たすが、情報表示７００の最下位レベルのプロセスである。たとえば、プロセスが、サブプロセスを有していないかもしれないし、またはそれらのサブプロセスが分析されていて、各サブプロセスの継続時間スコアが計装閾値を満たしていないため計装されていないかもしれない。したがって、サブプロセスの発見は、情報表示７００に示されるトランザクション追跡ついてこれらのプロセスのそれぞれで終了ししている。
【００４１】
図８は、いくつかの実施形態による、アプリケーションサーバ１１０上で実行されるアプリケーション１０８の監視されたプロセスをプルーニングするための方法８００のフローチャートである。方法８００は、主にサブプロセスを呼び出すように機能するトランザクション内の中間プロセスのプログラム的な計装をしないことを提供し、したがってパフォーマンス監視の観点からはそれほど重要ではない。他の利点の中でも、視覚化が困難で価値がほとんど提供しないプロセスの長いチェーンは、監視および情報ディスプレイへの表示から除外され、表示を重要なプロセス（たとえば、最も遅いプロセス）にフォーカスすることである。一実施形態では、図８に示される方法のステップは、システム１００のコンポーネントによって実行される。ステップは、異なる順序で実行されてもよく、方法８００は、異なるステップ、追加のステップ、またはより少ないステップを含んでもよい。いくつかの実施形態では、方法８００は方法２００に関連して実行される。他の実施形態では、方法８００は、別個のプルーニングタスクで実行される。
【００４２】
監視サーバ１２０は、第１のプロセス、第１のプロセスによって呼び出される第２のプロセス、および第２のプロセスによって呼び出される第３のプロセスを含むトランザクションの実行を示すトランザクション追跡を検出する８０２。第１、第２、および第３のプロセスは、コードグラフ内にあり、方法２００で上述したように監視のために選択されたアプリケーション１０８のパッケージに属する計装されたプロセスである。最初のプロセスは、トランザクション追跡の最高レベルのプロセスであり得、またはより高いレベルのプロセスによって呼び出される中間プロセスであり得る。
【００４３】
監視サーバ１２０は、第２のプロセスの継続時間を決定する８０４。監視サーバ１２０はまた、第３のプロセスの継続時間を決定する８０６。第２のプロセスは第３のプロセスを呼び出すため、第３のプロセスの継続時間は第２のプロセスの継続時間に含められる。エージェント１１４がトランザクション追跡を監視サーバ１１４に報告するとき、エージェント１１４から第２および第３プロセスの継続時間が返される。
【００４４】
監視サーバ１２０は、第２および第３のプロセスの継続時間に基づいて、第３のプロセスの継続時間スコアを決定する８０８。例えば、継続時間スコアは、第２のプロセスの継続時間と第３のプロセスの継続時間の比に基づいて計算されることができる。
【００４５】
監視サーバ１２０は、プルーニング閾値を決定する８１０。プルーニング閾値は、親プロセスが計装をしないべきかどうかを決定するために使用される。
【００４６】
モニタリングサーバ１２０は、継続時間スコアがプルーニング閾値を満たすかどうかを決定する８１２。いくつかの実施形態では、プルーニング閾値は、０．９５（すなわち９５パーセント）に設定される。継続時間スコアが.９５を超える場合、プルーニング閾値は満たされる。別の例では、継続時間スコアが.９５を超えない場合、プルーニング閾値は満たされない。プルーニング閾値は、ユーザ入力またはプログラム的によるなど調整可能である。プルーニング閾値を低くすると、親プロセスのプルーニングが増加し、データ収集量が制限され、中間の計装が値をほとんどまたはまったく追加しない場合に中間の計装が削除される。
【００４７】
いくつかの実施形態において、プロセスの継続時間スコアは、計装閾値およびプルーニング閾値の両方と比較される。計装閾値が満たされると、プロセスによって呼び出された子プロセスが計装される。プルーニング閾値が満たされると、プロセスを呼び出す親プロセスは計装されない。
【００４８】
第３のプロセスの継続時間スコアがプルーニング閾値を満たすと判定したことに応答して、監視サーバ１２０は、第２のプロセスを計装せず８１４、第１および第２のプロセスの計装を続ける。たとえば、第３のプロセスの継続時間スコアが.９９で、.９５のプルーニング閾値を満たしている場合、第２のプロセスの継続時間は主に第３のプロセスの実行に使用されるため、パフォーマンス監視の観点で第２のプロセスは重要ではない。
【００４９】
いくつかの実施形態では、監視サーバ１４０は、エージェント１１４に命令を送信することによりプロセスの計装をしない。エージェント１１４は、プロセスの既存の計装ポイントを削除する。
【００５０】
監視サーバ１２０は、第１のプロセスによって呼び出されているように第３のプロセスのインジケーションを情報ディスプレイに提供する８１６。さらに、情報表示は、第１と第３のプロセスの継続時間スコアまたは時間を含めることができる。計装されていない第２のプロセスは、情報表示から省略される。
【００５１】
８１２に戻って、第３のプロセスの継続時間スコアがプルーニング閾値を満たさないと決定したことに応答して、監視サーバ１２０は続けて第２のプロセスを計装する８１８。したがって、第１、第２、および第３のプロセスは引き続き計装される。
【００５２】
監視サーバ１２０は、第２のプロセスによって呼び出されているように第３のプロセスのインジケーションを情報ディスプレイに提供する８２０。情報表示は、第２のプロセスを呼び出す第１のプロセスおよび第３のプロセスを呼び出す第２プロセスを含むプロセス間の呼び出し関係のインジケーションを含む。情報表示には、第１、第２、および第３のプロセスの継続時間スコアまたは時間を含めることができる。
【００５３】
方法８００は、複数の親プロセスのチェーンを計装しないように繰り返されることができる。例えば、ステップ８０４−８２０は、第３のプロセスおよび第１のプロセスなどに対して実行することができる。
【００５４】
図９は、いくつかの実施形態による、トランザクション追跡の情報表示９００の一例である。情報ディスプレイ９００は、プロセスslowAndDeepを呼び出すプロセスhandleGetProduct（クラスSimpleRESTに属する）を示す。プロセスslowAndDeepはプロセスaを呼び出し、プロセスaはプロセスbを呼び出し、プロセスbはプロセスcを呼び出し、プロセスcはプロセスdを呼び出す。
【００５５】
プロセスcに対するプロセスdの継続時間スコアは.９９７（すなわち、９９．７０％の継続時間％）であり、これは.９５のプルーニング閾値を超えているため、これを満たす。そのため、プロセスdの親プロセスcは計装されないことができる。プロセスcがプルーニングされると、プロセスdはプロセスbのサブプロセスとして扱われ、プロセスbに対するプロセスdの継続時間スコアが計算され、プルーニング閾値と比較される。これにより、プロセスbは計装されない。プロセスaとslowAndDeepは、同じ手法を使用して計測されない。
【００５６】
図１０は、いくつかの実施形態による、トランザクション追跡の情報表示１０００の一例である。プロセスslowAndDeep、a、b、およびcのプルーニングとインストルメントの結果として、プロセスdは親プロセスhandleGetProductによって呼び出されているように情報ディスプレイに表示され、計装されないプロセスは情報ディスプレイ１０００に表示されていない。
【００５７】
追加の構成情報
本開示の実施形態の前述の説明は、例示の目的で提示されている。網羅的であること、または開示を開示された正確な態様に限定することは意図されていない。関連技術分野における当業者は、上記の開示に照らして多くの修正および変形が可能であることを理解することができる。
【００５８】
この説明のいくつかの部分は、情報に対する操作のアルゴリズムおよび記号表現に関して本開示の実施形態を説明している。これらのアルゴリズムの説明と表現は、データ処理技術の当業者によって一般的に使用され、彼らの仕事の内容を他の当業者に効果的に伝える。これらの操作は、機能的、計算的、または論理的に説明されているが、コンピュータプログラムまたは同等の電気回路、マイクロコードなどによって実装されると理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールと呼ぶことが便利な場合もある。説明された動作およびそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてもよい。
【００５９】
本明細書で説明されるステップ、動作、またはプロセスのいずれかは、単独で、または他のデバイスと組み合わせて、１つまたは複数のハードウェアまたはソフトウェアモジュールで実行または実装され得る。一実施形態では、ソフトウェアモジュールは、説明したステップ、操作、またはプロセスのいずれかまたはすべてを実行するためのコンピュータプロセッサによって実行可能なコンピュータプログラムコードを含むコンピュータ可読媒体を含むコンピュータプログラム製品で実装される。
【００６０】
本開示の実施形態は、本明細書の動作を実行するための装置にも関係し得る。この装置は、必要な目的のために特別に構築されてもよく、および／または、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成される汎用コンピューティングデバイスを備えてもよい。そのようなコンピュータプログラムは、非一時的な有形のコンピュータ可読記憶媒体、またはコンピュータシステムバスに結合され得る電子命令を格納するのに適した任意のタイプの媒体に格納され得る。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含むか、コンピューティング能力を高めるために複数のプロセッサ設計を採用するアーキテクチャとすることができる。
【００６１】
本開示の実施形態はまた、本明細書で説明されるコンピューティングプロセスによって生成される製品に関する場合がある。そのような製品は、コンピューティングプロセスから生じる情報を含むことができ、その情報は、非一時的な有形のコンピュータ読み取り可能な記憶媒体に格納され、本明細書に記載のコンピュータプログラム製品または他のデータの組み合わせの任意の実施形態を含み得る。
【００６２】
最後に、明細書で使用される言語は、主に読みやすさと教育目的のために選択されたものであり、本発明の主題を描写または制限するために選択されていない場合がある。したがって、本開示の範囲は、この詳細な説明によってではなく、本明細書に基づいた出願で発行される請求項によって制限されることが意図されている。したがって、実施形態の開示は、添付の特許請求の範囲に記載される本開示の範囲を例示することを意図するものであり、限定することを意図するものではない。
【図１】
2020524344.tif 000003
【図２】
2020524344.tif 000004
【図３】
2020524344.tif 000005
【図４】
2020524344.tif 000006
【図５】
2020524344.tif 000007
【図６】
2020524344.tif 000008
【図７】
2020524344.tif 000009
【図８】
2020524344.tif 000010
【図９】
2020524344.tif 000011
【図１０】
2020524344.tif 000012
【国際調査報告】
2020524344.tif 000013
2020524344.tif 000014