JP5474177B2 - 分散アプリケーションの監視 - Google Patents

分散アプリケーションの監視 Download PDF

Info

Publication number
JP5474177B2
JP5474177B2 JP2012502129A JP2012502129A JP5474177B2 JP 5474177 B2 JP5474177 B2 JP 5474177B2 JP 2012502129 A JP2012502129 A JP 2012502129A JP 2012502129 A JP2012502129 A JP 2012502129A JP 5474177 B2 JP5474177 B2 JP 5474177B2
Authority
JP
Japan
Prior art keywords
work item
technology
interceptor
specific
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012502129A
Other languages
English (en)
Other versions
JP2012521607A (ja
JP2012521607A5 (ja
Inventor
エー.コエリョ アレクサンダー
ジェイ.サンガヴィ アシュヴィンクマール
エム.マハジャン ダナンジェイ
スダカール ラジーヴ
ケー.ガネーサン アナンダー
セシュ クマール クラパティ ヴェンカタ
ジー.レトカ イラリエ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012521607A publication Critical patent/JP2012521607A/ja
Publication of JP2012521607A5 publication Critical patent/JP2012521607A5/ja
Application granted granted Critical
Publication of JP5474177B2 publication Critical patent/JP5474177B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、分散アプリケーションの監視に関する。
ソフトウェアアプリケーションは、様々な物理コンポーネントを横断して分散されていると監視するのが難しい場合がある。さらに、個々のコンポーネントが装備されていなかったり、異なるコンポーネントが企業内の異なる運用チームの管轄下にあったりする場合もある。また、アプリケーションに複数のテクノロジーが利用されている場合もある。分散アプリケーションは異種混合の場合があるが、多くの場合、分散アプリケーション用の監視システムはテクノロジーに固有のものである(たとえば、特定のシステムはJava(登録商標)アプリケーションのコンポーネントを監視できるが、.NETアプリケーションのコンポーネントは監視できないなど)。これに加えて、監視システムは、監視対象の分散アプリケーションのパフォーマンスに悪影響を与える可能性がある。すなわち、監視システムは、分散アプリケーションですべてのトランザクションを監視する試みにおいて、処理およびメモリに大きなオーバーヘッドを生じさせ、動作を妨害したり、または分散アプリケーションのパフォーマンスに著しい影響を与えたりする可能性がある。そのようなパフォーマンスへの影響は、リアルタイム、ほぼリアルタイム、または重要な役割を担う分散アプリケーションにおいて問題となる可能性がある。
本開示は、分散アプリケーション用の監視システムについて記述するものである。データベース、サーバー、およびWebサービスなど、様々なハードウェアおよびソフトウェアの分散アプリケーションコンポーネントの監視に対応している。また、.NET、Java、Windows Communications Foundation(WCF)、Internet Information Services(IIS)、Windows(登録商標)ベースのテクノロジー、およびUNIX(登録商標)ベースのテクノロジーなど、複数のテクノロジーの監視に対応している。
監視システムには、テクノロジーに依存しないインターセプターマネージャー、および分散アプリケーションのコンポーネントによって送信および受信されるメッセージを傍受できる1つまたは複数のテクノロジー固有のインターセプターが含まれている。テクノロジー固有の各インターセプターは、特定のテクノロジーに固有のものであり、特定のテクノロジーに関連する分散アプリケーションのコンポーネントに取り付けられる(たとえば.NETインターセプターは、.NETアプリケーションまたはサービスを含む分散アプリケーションのコンポーネントに取り付けられる)。テクノロジー固有のインターセプターは、特定の関数の呼び出しを追跡し、分散アプリケーションの特定の実行パスに沿ってアクティビティを追跡し、または分散アプリケーションに発生するイベント(たとえば、ソフトウェア例外または報告されたエラーなど)を追跡するように構成することができる。テクノロジー固有のインターセプターは、傍受したメッセージに基づいてワークアイテムを生成し、テクノロジーに依存しないインターセプターマネージャーにワークアイテムを送信する。
テクノロジーに依存しないインターセプターマネージャーは、受信したワークアイテムの実行をスケジューリングすることができる。たとえば、テクノロジーに依存しないインターセプターマネージャーは、分散アプリケーションの検出した依存関係を保存場所に格納し、アクティビティ情報を保存場所に格納して、IT管理者または管理アプリケーションなどのクライアントにイベントの発生を報告することができる。また、テクノロジーに依存しないインターセプターマネージャーは、監視システムによるパフォーマンスへの影響を軽減するために、ワークアイテムのキューイング、依存関係のキャッシング、バックグラウンドのスレッド処理、ガベージコレクションなどの調整機能を備えることができる。
この概要は、以下に発明を実施するための形態においてさらに詳しく記述する概念の抜粋を簡単な形で紹介するために提供するものである。この概要は、請求される主題の主な特徴または重要な特徴を特定することを意図したものではなく、また、請求される主題の範囲を制限するために使用することを意図したものでもない。
分散アプリケーションを監視するシステムの特定の実施形態を示すブロック図である。 分散アプリケーションを監視するシステムの他の特定の実施形態を示すブロック図である。 分散アプリケーションを監視するシステムと共に使用できるIDモニターの特定の実施形態を示すブロック図である。 分散アプリケーションを監視するメッセージ傍受機能を図示するブロック図である。 分散アプリケーションを監視する方法の特定の実施形態を示す流れ図である。 分散アプリケーションを監視する方法の他の特定の実施形態を示す流れ図である。 分散アプリケーションを監視する方法の特定の実施形態を示す流れ図である。 分散アプリケーションを監視する方法の他の特定の実施形態を示す流れ図である。 分散アプリケーションを監視する方法の他の特定の実施形態を示す流れ図である。 テクノロジーに依存しないインターセプターマネージャーでワークアイテムを選択的にスケジューリングする方法の特定の実施形態を示す流れ図である。 分散コンピューティング環境の特定の実施形態を図示する一般的な図である。 図1〜図11に示すようなコンピュータに実装された方法の実施形態をサポートするように動作可能なコンピューティングデバイス、コンピュータプログラム製品、およびシステムコンポーネントを含むコンピューティング環境を示すブロック図である。
特定の実施形態では、分散アプリケーションの複数のコンポーネントを識別するステップと、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップとを含む方法が開示される。また、この方法には、識別された特定のテクノロジーに基づいて特定のコンポーネントにテクノロジー固有のインターセプターを取り付けるステップと、取り付けられたテクノロジー固有のインターセプターを使用して、特定のコンポーネントによって送信または受信されるメッセージを傍受するステップとが含まれる。この方法は、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成するステップと、分散アプリケーションのパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて、少なくとも1つの潜在的なワークアイテムの実行をスケジューリングするかどうかを決定するステップとをさらに含む。特定の実施形態では、少なくとも1つの潜在的なワークアイテムは、特定の命令または1組の命令に処理が必要であることを決定することに応じて生成される実行可能なワークアイテムである。
別の特定の実施形態では、第1のテクノロジー固有のインターセプターおよび第2のテクノロジー固有のインターセプターを含む複数のテクノロジー固有のインターセプターと、テクノロジーに依存しないインターセプターマネージャーとを含むシステムが開示される。第1のテクノロジー固有のインターセプターは、第1のテクノロジーに関連し、第2のテクノロジー固有のインターセプターは、第1のテクノロジーとは異なる第2のテクノロジーに関連する。第1のテクノロジー固有のインターセプターは、第1のテクノロジーに関連する第1の分散アプリケーションコンポーネントの動作を追跡するように構成されており、第1の分散アプリケーションコンポーネントによって送信されるメッセージおよび受信されるメッセージを傍受するステップを含む。第1のテクノロジー固有のインターセプターは、第1の分散アプリケーションコンポーネントの追跡された動作に基づいてワークアイテムを生成し、テクノロジーに依存しないインターセプターマネージャーにワークアイテムを送信するように、さらに構成される。第2のテクノロジー固有のインターセプターは、第2のテクノロジーに関連する第2の分散アプリケーションコンポーネントの動作を追跡するように構成されており、第2の分散アプリケーションコンポーネントによって送信されるメッセージおよび受信されるメッセージを傍受するステップを含む。第2のテクノロジー固有のインターセプターは、第2の分散アプリケーションコンポーネントの追跡された動作に基づいてワークアイテムを生成し、テクノロジーに依存しないインターセプターマネージャーにワークアイテムを送信するように、さらに構成される。テクノロジーに依存しないインターセプターマネージャーは、複数のワークアイテムマネージャーを含み、これには第1のテクノロジー固有のインターセプターに関連する第1のワークアイテムマネージャーおよび第2のテクノロジー固有のインターセプターに関連する第2のワークアイテムマネージャーが含まれている。各ワークアイテムマネージャーは特定のテクノロジー固有のインターセプターに関連しており、特定のテクノロジー固有のインターセプターからワークアイテムを受信して、受信したワークアイテムをワークアイテムキューに入れるように構成される。各ワークアイテムマネージャーは、特定のテクノロジー固有のインターセプターによって追跡された分散アプリケーションコンポーネントのパフォーマンスに対する特定のワークアイテムの影響を、受け入れ可能なパフォーマンスへの影響のしきい値と比較するようにさらに構成される。各ワークアイテムマネージャーは、影響が受け入れ可能なパフォーマンスに対する影響のしきい値未満であるときに、特定のワークアイテムの実行をスケジューリングし、影響が受け入れ可能なパフォーマンスに対する影響のしきい値より大きいときに、特定のワークアイテムの実行をスケジューリングせずに、特定のワークアイテムを破棄するように、さらに構成される。
別の特定の実施形態では、コンピュータ可読媒体が開示される。コンピュータ可読媒体は、コンピュータによって実行されたときに、テクノロジーに依存しないインターセプターマネージャーにおいて、分散アプリケーションの第1のコンポーネントに取り付けられている第1のテクノロジー固有のインターセプターから第1のワークアイテムをコンピュータに受信させる命令を含む。第1のテクノロジー固有のインターセプターは第1のテクノロジーに固有のものであり、第1のコンポーネントは第1のテクノロジーに関連する。また、コンピュータ可読媒体は、コンピュータによって実行されたときに、テクノロジーに依存しないインターセプターマネージャーにおいて、分散アプリケーションの第2のコンポーネントに取り付けられている第2のテクノロジー固有のインターセプターから第2のワークアイテムをコンピュータに受信させる命令を含む。第2のテクノロジー固有のインターセプターは、第2のテクノロジーに固有のものである。第2のコンポーネントは第2のテクノロジーに関連し、第2のテクノロジーは第1のテクノロジーとは異なる。コンピュータ可読媒体は、コンピュータによって実行されたときに、分散アプリケーションに対する第1のワークアイテムによる第1の影響に基づいて、および分散アプリケーションに対する第2のワークアイテムによる第2の影響に基づいて、第1のワークアイテムおよび第2のワークアイテムの実行をスケジューリングするかどうかをコンピュータに決定させる命令をさらに含む。
図1は、分散アプリケーション102を監視するシステム100の特定の実施形態を示すブロック図である。分散アプリケーション102は、第1のコンピューティングデバイス104のWCF(Windows Communication Foundation)コンポーネント110および第2のコンピューティングデバイス106の.NETコンポーネント120などのコンポーネントを含む。第1のコンピューティングデバイス104および第2のコンピューティングデバイス106は分散されている(たとえば、別個のハードウェアを使用して動作したり、または互いに遠く離れて配置されたりする)。また、分散アプリケーション102は、たとえばWCFコンポーネント110に取り付けられたWCFインターセプター112、および.NETコンポーネント120に取り付けられた.NETインターセプター122など、コンポーネントに取り付けられたテクノロジー固有のインターセプターを含む。分散アプリケーション102のコンポーネントは、メッセージを送信および受信でき、コンポーネントに取り付けられたテクノロジー固有のインターセプターは、メッセージを傍受できる。また、テクノロジー固有のインターセプターは、傍受したメッセージに基づいてワークアイテムを生成し、生成したワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信できる。
分散アプリケーション102の各コンポーネントは、分散アプリケーション102の他のコンポーネントにメッセージを送信し、分散アプリケーション102の他のコンポーネントからメッセージを受信するように構成することができる。たとえば、WCFコンポーネント110および.NETコンポーネント120は、相互にメッセージを送信し、相互にメッセージを受信するように構成することができる。特定の実施形態では、メッセージはXML(extensible markup language)のメッセージである。
テクノロジー固有のインターセプターはそれぞれ、テクノロジー固有のインターセプターが取り付けられているコンポーネントで特定の関数の呼び出しを追跡するように構成することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110で特定の関数の呼び出しを追跡するように構成することができる。特定の実施形態では、特定の関数は、分散アプリケーション102の異なるコンポーネントにあるソース操作およびターゲット操作を含む。たとえば、特定の関数には、WCFコンポーネント110のソース操作および.NETコンポーネント120のターゲット操作がある場合がある。次に、WCFインターセプター112は、特定の関数の呼び出しを示すメッセージを傍受することによって、WCFコンポーネント110のソース操作と、.NETコンポーネント120のターゲット操作との間の依存関係を検出することができる。
また、テクノロジー固有のインターセプターはそれぞれ、テクノロジー固有のインターセプターが取り付けられているコンポーネントを含む分散アプリケーション102の特定の実行パスでアクティビティを監視するように構成することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110と、.NETコンポーネント120との間のメッセージを傍受して、傍受したメッセージが、WCFコンポーネント110を含む特定の実行パスに沿ったアクティビティを表しているかどうかを決定する。
また、テクノロジー固有のインターセプターのそれぞれは、分散アプリケーション102で発生する特定のイベント(たとえば、ソフトウェア例外または報告されたエラーなど)を追跡するように構成することができる。特定の実施形態では、特定のイベントは特定の期間追跡される。たとえば、WCFインターセプター112は、1分間にWCFコンポーネント110で発生するソフトウェア例外の数を追跡し、これによって、WCFコンポーネント110で1分間に生じる例外の割合を計算することができる。あるいは、特定のイベントを連続的に追跡することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110と.NETコンポーネント120との間のメッセージを傍受して、WCFコンポーネント110または.NETコンポーネント120のいずれかでソフトウェア例外(たとえばイベントなど)が発生したことを傍受したメッセージから決定することができる。
テクノロジー固有のインターセプターはそれぞれ、テクノロジー固有のインターセプターで傍受するメッセージに基づいてワークアイテムを生成し、生成したワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信するように構成することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110のソース操作と、.NETコンポーネント120のターゲット操作との間で検出された依存関係を格納する命令を含むワークアイテムを生成して、ワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信することができる。別の例として、WCFインターセプター112は、WCFコンポーネント110を含む特定の実行パスに関連するアクティビティ情報を格納し、ワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信するための命令を含むワークアイテムを生成することができる。さらに別の例としては、WCFインターセプター112は、WCFコンポーネント110または.NETコンポーネント120のいずれかでのソフトウェア例外の発生を報告する命令を含むワークアイテムを生成して、ワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信することができる。.NETインターセプター122も同様に、ワークアイテムを生成することができる。あるいは、WCFインターセプター112は、3つのタスクすべてに対する命令を含む単一のワークアイテムを生成することができる。
また、複数のインターセプターを単一のコンポーネントに取り付けることができることに注意されたい。たとえば、Webサーバーに.NETテクノロジーおよびWCFテクノロジーの両方が含まれている場合は、図1の.NETインターセプター122などの.NETインターセプターおよび図1のWCFインターセプター112などのWCFインターセプターの両方を分散アプリケーション102のWebサーバーに取り付けることができる。
テクノロジーに依存しないインターセプターマネージャー130は、分散アプリケーション102のWebサービスまたは分散アプリケーション102の管理アプリケーションに配置することができる。テクノロジーに依存しないインターセプターマネージャー130は、複数のワークアイテムマネージャーを含むことができ、複数のワークアイテムマネージャーはそれぞれ、特定のテクノロジー固有のインターセプターからワークアイテムを受信するように構成される。たとえば、図1に示す実施形態では、テクノロジーに依存しないインターセプターマネージャーは、WCFインターセプター112からワークアイテムを受信するように構成されたWCFワークアイテムマネージャー140および.NETインターセプター122からワークアイテムを受信するように構成された.NETワークアイテムマネージャー150を含む。また、各ワークアイテムマネージャーは、ワークアイテムキューにワークアイテムを格納するように構成することができる。たとえば、WCFワークアイテムマネージャー140は、WCFワークアイテムキュー142にワークアイテムを格納することができ、.NETワークアイテムマネージャーは、.NETワークアイテムキュー152にワークアイテムを格納することができる。特定の実施形態では、ワークアイテムは、ワークアイテムがテクノロジーに依存しないインターセプターマネージャー130によって受信された順にワークアイテムキューに格納される。たとえば、第2のワークアイテムより前に第1のワークアイテムがテクノロジーに依存しないインターセプターマネージャー130によって受信された場合、WCFインターセプター112から受信された第1のワークアイテムは、WCFインターセプターから受信された第2のワークアイテムの前に、WCFワークアイテムキュー142に格納することができる。また、各ワークアイテムマネージャーは、ワークアイテムキューが満杯のときに、受信したワークアイテムを破棄するように構成することができる。たとえば、WCFワークアイテムキュー142が満杯であるとWCFワークアイテムマネージャー140が決定したときに、WCFワークアイテムマネージャー140は受信したワークアイテムを破棄することができる(たとえば、WCFワークアイテムキュー142のサイズが、WCFワークアイテムマネージャー140に認識されているワークアイテムキューの最大サイズの変数と等しいとき)。
各ワークアイテムマネージャーは、キューに入れられたワークアイテムの実行をスケジューリングするように構成されたワークアイテムスケジューリングロジックを含むことができる。たとえば、WCFワークアイテムマネージャー140は、WCFワークアイテムスケジューリングロジック144を含むことができ、.NETワークアイテムマネージャー150は、.NETワークアイテムスケジューリングロジック154を含むことができる。特定の実施形態では、分散アプリケーション102のパフォーマンスに対する特定のワークアイテムによる予測される影響に基づいて、WCFワークアイテムスケジューリングロジック144または.NETワークアイテムスケジューリングロジック154は、特定のワークアイテムの実行をスケジューリングするかどうかを決定することができる。たとえば、WCFワークアイテムスケジューリングロジック144は、特定のワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスに対する影響のしきい値未満であるときに、特定のワークアイテムの実行をスケジューリングすることができる(たとえば、受け入れ可能なプロセッサ使用率への影響が1%、受け入れ可能なメッセージ待機時間への影響が1秒、または受け入れ可能な実行キューの長さへの影響が3つの実行可能な動作など)。あるいは、WCFワークアイテムスケジューリングロジック144は、WCFコンポーネント110に対する特定のワークアイテムによる予測される影響に基づいて、特定のワークアイテムの実行をスケジューリングするかどうかを決定することができる。
特定の実施形態では、テクノロジー固有のインターセプターは、ワークアイテムマネージャーに空のワークアイテムを要求し、空のワークアイテムに情報および実行命令を格納することにより、ワークアイテムを生成するように構成される。そのような実施形態では、ワークアイテムマネージャーは、空のワークアイテムに対する要求を拒否することによって、特定の分散アプリケーションコンポーネントで監視することによるパフォーマンスに対する影響を軽減できることを理解されたい。たとえば、.NETコンポーネント120の依存関係を検出すると、.NETインターセプター122は、.NETワークアイテムマネージャー150に空のワークアイテムを要求することができる。.NETワークアイテムマネージャー150が要求を許可し、.NETインターセプター122に空のワークアイテムを送信すると、.NETインターセプター122は、空のワークアイテムに検出された依存関係を格納することによりワークアイテムを生成し、生成したワークアイテムを.NETワークアイテムマネージャー150に送信することができる。特定の実施形態では、ワークアイテムには有効期間があり、有効期間内に実行がスケジューリングされない場合は、ワークアイテムキューから破棄される。たとえば、.NETワークアイテムマネージャー150によって空のワークアイテムが生成されてから10秒以内にスケジューリングされない場合は、.NETインターセプター122によって生成されたワークアイテムは、期限が切れて破棄することができる。
特定の実施形態では、ワークアイテムマネージャー140およびワークアイテムマネージャー150などのワークアイテムマネージャーは、以下に示す代表的なC#クラステンプレートおよびインターフェイスに従って実装することができる。
Figure 0005474177
動作中に、テクノロジー固有のインターセプターは、分散アプリケーション102のコンポーネントに取り付けることができる。たとえば、WCFインターセプター112は、WCFコンポーネント110に取り付けることができ、.NETインターセプター122は、.NETコンポーネント120に取り付けることができる。テクノロジー固有のインターセプターのそれぞれは、分散アプリケーション102で、関数呼び出しを追跡し、アクティビティ情報を追跡し、パフォーマンスイベントを追跡するか、または、それらを任意に組み合わせるように構成することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110で特定のWCF関数の呼び出しを追跡し、WCFコンポーネント110を含む分散アプリケーション102の特定の実行パスでアクティビティ情報を追跡し、WCFコンポーネント110で発生するソフトウェア例外を追跡するように構成することができる。同様に、.NETインターセプター122は、.NETコンポーネント120で特定の.NET関数の呼び出しを追跡し、.NETコンポーネント120を含む分散アプリケーション102の特定の実行パスに関連するアクティビティ情報を追跡し、.NETコンポーネント120で発生するソフトウェア例外を追跡するように構成することができる。
動作している間に、テクノロジー固有のインターセプターは、分散アプリケーション102の様々なコンポーネント間で1つまたは複数のメッセージを傍受し、1つまたは複数の傍受したメッセージに基づいてワークアイテムを生成することができる。また、テクノロジー固有のインターセプターは、生成したワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信することができる。たとえば、WCFインターセプター112は、WCFコンポーネント110によって.NETコンポーネント120に送信されるメッセージを傍受して、傍受したメッセージに基づいてワークアイテムを生成し、ワークアイテムをテクノロジーに依存しないインターセプターマネージャー130に送信することができる。特定の実施形態では、傍受したメッセージは、WCFコンポーネント110のソース操作と、.NETコンポーネント120のターゲット操作との間の依存関係を示すものであり、ワークアイテムは、依存関係を格納する命令を含む。別の特定の実施形態では、傍受したメッセージは、追跡するようにWCFインターセプター112が構成された分散アプリケーション102の実行パスに関連するアクティビティ情報を含み、ワークアイテムは、アクティビティ情報を格納する命令を含む。別の特定の実施形態では、傍受したメッセージは、WCFコンポーネント110または.NETコンポーネント120のいずれかでソフトウェア例外が発生したことを示し、ワークアイテムは、ソフトウェア例外の発生を報告する命令を含む。
テクノロジーに依存しないインターセプターマネージャー130がテクノロジー固有のインターセプターからワークアイテムを受信すると、ワークアイテムマネージャー(たとえば、WCFワークアイテムマネージャー140または.NETワークアイテムマネージャー150など)は、受信したワークアイテムをアイテムキュー(たとえば、WCFワークアイテムキュー142または.NETワークアイテムキュー152など)に追加することができる。
WCFワークアイテムキュー142の潜在的な各ワークアイテムに対して、分散アプリケーション102のパフォーマンスに対する潜在的なワークアイテムによる予測される影響に基づいて、WCFワークアイテムスケジューリングロジック144は、潜在的なワークアイテムの実行をスケジューリングするかどうかを決定することができる。潜在的なワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満の場合、WCFワークアイテムスケジューリングロジック144は、潜在的なワークアイテムの実行をスケジューリングすることができる。たとえば、分散アプリケーション102でのメッセージ待機時間に対する潜在的なワークアイテムによる予測される影響が1秒未満の場合は、潜在的なワークアイテムをスケジューリングすることができる。特定のワークアイテムによる潜在的な影響が、受け入れ可能なパフォーマンスへの影響のしきい値を超えている場合は、WCFワークアイテムスケジューリングロジック144は、WCFワークアイテムキュー142から潜在的なワークアイテムを破棄することができる。たとえば、分散アプリケーションのメッセージ待機時間に対する潜在的なワークアイテムによる予測される影響が1秒を超える場合、潜在的なワークアイテムを破棄することができる。同様に、.NETワークアイテムキュー152の潜在的な各ワークアイテムに対して、分散アプリケーション102のパフォーマンスに対する潜在的なワークアイテムによる予測される影響に基づいて、.NETワークアイテムスケジューリングロジックは、潜在的なワークアイテムを選択的にスケジューリングすることができる。
図1のシステム100は、様々なコンポーネントを横断して分散され、様々なテクノロジーを含む分散アプリケーションを監視するために使用することができることを理解されたい。図1のシステム100は、分散アプリケーションに対する、そのような監視による全体的なパフォーマンスへの影響を軽減するために、調整機能(たとえば、空のワークアイテムに対する要求を拒否する、ワークアイテムキューのサイズを制限する、パフォーマンスに対する予測される影響が大きいワークアイテムを破棄する、有効期間後にワークアイテムを自動的に期限切れにするなど)を含むことをさらに理解されたい。したがって、図1のシステム100は、必要に応じて、パフォーマンスのために監視精度を犠牲にすることができるため、リアルタイム、ほぼリアルタイム、または重要な役割を担う分散アプリケーションの動作は、図1のシステム100によって妨害されないことを理解されたい。
図2は、分散アプリケーション201を監視するシステム200の他の特定の実施形態を示すブロック図である。分散アプリケーション201は、.NETコンポーネント205に取り付けられた.NETインターセプター202、WCFコンポーネント206に取り付けられたWCFインターセプター203、およびJavaコンポーネント207に取り付けられたJavaインターセプター204など、複数のテクノロジー固有のインターセプターを含む。テクノロジー固有のインターセプターはそれぞれ、ワークアイテムをテクノロジーに依存しないインターセプターマネージャー230に送信するように構成することができる。例示的実施形態では、.NETインターセプター202は、図1の.NETインターセプター122を含み、WCFインターセプター203は、図1のWCFインターセプター112を含み、テクノロジーに依存しないインターセプターマネージャー230は、図1のテクノロジーに依存しないインターセプターマネージャー130を含む。
テクノロジー固有のインターセプターによって生成され、テクノロジーに依存しないインターセプターマネージャー230に送信されるワークアイテムは、分散アプリケーション201の検出された依存関係を格納する命令、分散アプリケーション201の特定の実行パスに関連するアクティビティ情報を格納する命令、分散アプリケーション201で発生したイベントを報告する命令、またはそれらを任意に組み合わせた命令を含むことができる。テクノロジーに依存しないインターセプターマネージャー230は、ワークアイテムマネージャー240など複数のワークアイテムマネージャーを含むことができ、各ワークアイテムマネージャーは、ワークアイテムキュー242などのワークアイテムキューに、特定のテクノロジー固有のインターセプターから受信したワークアイテムを格納するように構成することができる。たとえば、ワークアイテムマネージャー240は.NETワークアイテムマネージャーでもよく、.NETインターセプター202から受信したワークアイテムをワークアイテムキュー242に格納することができる。別の例として、ワークアイテムマネージャー240は、WCFワークアイテムマネージャーでもよく、WCFインターセプター203から受信したワークアイテムをワークアイテムキュー242に格納することができる。別の例として、ワークアイテムマネージャー240は、Javaワークアイテムマネージャーでもよく、Javaインターセプター204から受信したワークアイテムをワークアイテムキュー242に格納することができる。
また、ワークアイテムマネージャー240は、ワークアイテムキュー242でワークアイテムの実行をスケジューリングし、実行がスケジューリングされたら、ワークアイテムキュー242からワークアイテムを削除するように構成されたワークアイテムスケジューリングロジック244を含むことができる。特定の実施形態では、ワークアイテムスケジューリングロジック244は、分散アプリケーション201のパフォーマンスに対する特定のワークアイテムによる予測される影響に基づいて、特定のワークアイテムの実行をスケジューリングするかどうかを決定する。たとえば、ワークアイテムスケジューリングロジック244は、特定のワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満であるときに、特定のワークアイテムの実行をスケジューリングすることができる。
ワークアイテムスケジューリングロジック244は、スレッドプール220にアクセスすることができ、スレッドプール220は、1つまたは複数のフォアグラウンドのスレッド222および1つまたは複数のバックグラウンドのスレッド224を含む。ワークアイテムスケジューリングロジック244がスレッドプール220にアクセスできる場合、ワークアイテムスケジューリングロジック244は、スレッドプール220のフォアグラウンドのスレッド222の1つまたはバックグラウンドのスレッド224の1つにおいて、ワークアイテムの実行をスケジューリングすることができる。また、ワークアイテムスケジューリングロジック244は、同時に実行するワークアイテムの数を制限し、スレッドプール220の同時に実行するスレッドの数を制限するように構成することができる。
テクノロジーに依存しないインターセプターマネージャー230の依存関係マネージャー272は、検出された依存関係を格納する命令を含むワークアイテムを実行するように構成することができる。特定の実施形態では、依存関係マネージャー272は、検出した依存関係を依存関係キャッシュ282に一時的に収集し、収集した依存関係をバッチで格納する。たとえば、依存関係マネージャー272は、検出した依存関係を依存関係キャッシュ282に収集し、依存関係キャッシュ282のサイズが固定バッチサイズ(たとえば20)に達するたびに、依存関係キャッシュ282から、検出し収集した依存関係を格納することができる。あるいは、依存関係マネージャー272は、検出した依存関係を依存関係キャッシュ282に収集し、依存関係キャッシュ282から、検出し収集した依存関係を固定された時間間隔(たとえば120秒)で格納することができる。有効期間内に格納されなければ、依存関係キャッシュ282によって収集された依存関係は期限が切れる場合がある。依存関係マネージャー272は、1つまたは複数の保存場所にアイテムを格納することを担当する記憶域サービス290に、検出した依存関係のバッチを送信することによって、検出した依存関係のバッチを格納することができる。たとえば、記憶域サービス290は、データベースまたは他の何らかのデータストアに、検出した依存関係を格納することができる。特定の実施形態では、記憶域サービス290は、特定の依存関係が以前に格納されていないと決定することに応じて特定の依存関係を格納することができる。また、依存関係マネージャー272は、分散アプリケーション201のテクノロジー固有のインターセプターごとに、依存関係検出をオンまたはオフにするように構成することができる。たとえば、依存関係マネージャー272は、.NETインターセプター202、WCFインターセプター203、およびJavaインターセプター204のそれぞれで、依存関係検出をオンまたはオフにすることができる。
テクノロジーに依存しないインターセプターマネージャー230のアクティビティマネージャー270は、分散アプリケーション201の特定の実行パスに関連するアクティビティ情報を格納する命令を含むワークアイテムを実行するように構成することができる。特定の実施形態では、アクティビティマネージャー270は、そのようなワークアイテムをアクティビティキュー280に入れ、アクティビティキュー280が満杯の場合は、受信したそのようなワークアイテムを破棄する。アクティビティマネージャー270は、アクティビティ情報をアクティビティキュー280から記憶域サービス290に転送することによって、アクティビティ情報を格納することができる。特定の実施形態では、アクティビティマネージャー270は、特定のテクノロジー固有のインターセプターでアクティビティ情報コレクションを初期化するように構成される。たとえば、Javaコンポーネント207がJava Database Connectivity(JDBC)を介してデータベースとインターフェイスされると、アクティビティマネージャー270は、Javaインターセプター204に、Javaコンポーネント207でJDBC呼び出しを含むすべてのメッセージを追跡するように指示することによって、データベースの動作を追跡することができる。
図2に示す特定の実施形態は、1つの記憶域サービスしか示していないが(つまり記憶域サービス290)、テクノロジーに依存しないインターセプターマネージャー230によって複数の記憶域サービスにアクセスできることに注意されたい。たとえば、依存関係マネージャー272は、第1の記憶域サービスを使用して、検出した依存関係を格納し、アクティビティマネージャー270は、第2の記憶域サービスを使用して、アクティビティ情報を格納することができる。第1の記憶域サービスおよび第2の記憶域サービスは、同じ保存場所または異なる保存場所にデータを格納することができる。
テクノロジーに依存しないインターセプターマネージャー230のIDモニター260は、分散アプリケーション201のコンポーネントごとにIDモニターを含むことができる。たとえば、IDモニター260は、分散アプリケーション201のWebサービスのエンドポイントモニターを含むことができる。特定の実施形態では、特定のコンポーネントのIDモニターは、特定のコンポーネントに取り付けられたテクノロジー固有のインターセプターによって検出されたイベント(たとえばソフトウェア例外またはエラーなど)に関連するデータを格納する。各IDモニターは1つまたは複数のクライアントを保持することができ、各IDモニターは、1つまたは複数のクライアントに特定のイベントの発生を報告することによって、特定のイベントの発生を報告する命令を含むワークアイテムを実行することができる。たとえば、.NETインターセプター202が、.NETコンポーネント205でのエラーを報告する命令を含むワークアイテムを生成すると、.NETコンポーネント205のIDモニターは、.NETコンポーネント205のIDモニターのクライアントにエラーを報告することによって、ワークアイテムを実行することができる。各IDモニターは、コンポーネントモニター、エンドポイントモニター、アクティビティモニター、ビジネス展望モニター、操作呼び出しモニター、機器モニター、またはこれらの任意の組み合わせなど、割り当てられたモニターを含む監視ツリーにイベントデータを格納することができる。監視ツリーについては、図3を参照しながら本明細書にさらに記述する。また、テクノロジーに依存しないインターセプターマネージャー230は、ガベージコレクター284を含むことができる。ガベージコレクター284は、固定された時間間隔で実行し、固定された時間間隔中に使用されなかったモニターの割り当てを解除するように構成することができる。
特定の実施形態では、テクノロジーに依存しないインターセプターマネージャー230は、1つまたは複数の構成設定212を含むことができる。構成設定212は、構成ファイル210を介して設定することができる。構成ファイル210は、任意の形式(たとえばXML)で格納することができ、依存関係マネージャー272、アクティビティマネージャー270、ワークアイテムマネージャー240、およびガベージコレクター284の設定を含むことができる。たとえば、構成ファイル210はXMLに格納することができ、以下に示す代表的なXMLセクションを含むことができる。
Figure 0005474177
特定の実施形態では、テクノロジー固有のインターセプターは、以下に示す代表的なC#インターフェイスに従って実装することができる。
Figure 0005474177
テクノロジー固有のインターセプターが上記のように実装されると、テクノロジー固有のインターセプターの依存関係検出は、メソッドProcess Dependency Discovery()を呼び出すことによってオンまたはオフにすることができ、アクティビティ監視は、メソッドProcess Activity Monitoring()によってオンまたはオフにすることができることを理解されたい。さらに、イベント追跡は、メソッドSetup Instrument()によって設定することができ、関数呼び出し追跡は、メソッドSetup Operation Call Instrument()によって設定することができ、アクティビティ追跡は、メソッドSetup Activity Instrument()によって設定することができる。
特定の実施形態では、テクノロジーに依存しないインターセプターマネージャー230は、分散アプリケーション201の外部にあるエージェント208に配置することができる。そのような実施形態では、テクノロジー固有のインターセプター202〜204など、分散アプリケーションのテクノロジー固有のインターセプターは、外部エージェント208によって関数呼び出しを追跡し、アクティビティ情報を追跡し、イベントを追跡するように構成することができる。
動作中に、テクノロジーに依存しないインターセプターマネージャー230は、構成ファイル210を介して構成することができる。テクノロジーに依存しないインターセプターマネージャー230は、.NETコンポーネント205、WCFコンポーネント206、およびJavaコンポーネント207など、分散アプリケーション201のコンポーネントを識別することができる。テクノロジーに依存しないインターセプターマネージャー230は、1つまたは複数コンポーネントに関連する特定のテクノロジーをさらに識別し、テクノロジー固有のインターセプターを1つまたは複数のコンポーネントに取り付けることができる。たとえば、テクノロジーに依存しないインターセプターマネージャー230は、.NETインターセプター202を.NETコンポーネント205に取り付け、WCFインターセプター203をWCFコンポーネント206に取り付け、Javaインターセプター204をJavaコンポーネント207に取り付けることができる。テクノロジーに依存しないインターセプターマネージャー230は、テクノロジー固有のインターセプターを構成して、依存関係を検出し、アクティビティ情報を追跡して、分散アプリケーション201のイベントを追跡することができる。たとえば、依存関係マネージャー272は、.NETインターセプター202で依存関係検出を作動させ、.NETインターセプター202を構成し、.NETコンポーネント205で特定の.NET関数の呼び出しを追跡することができる。別の例として、アクティビティマネージャー270は、Javaコンポーネント207とデータベースとの間のJDBC呼び出しを追跡するようにJavaコンポーネント204に指示することができる。さらに別の例としては、テクノロジーに依存しないインターセプターマネージャー230は、WCFインターセプター203を構成して、WCFコンポーネント206でソフトウェア例外の各発生を報告することができる。
テクノロジー固有のインターセプターは、分散アプリケーション201の様々なコンポーネント間の1つまたは複数のメッセージを傍受して、1つまたは複数の傍受したメッセージに基づいて、1つまたは複数のワークアイテムを生成することができる。たとえば、.NETインターセプター202は、特定の.NET関数の呼び出しに関連するメッセージを傍受し、WCFコンポーネント206のソース操作と、.NETコンポーネント205のターゲット操作との間の依存関係を検出することができる。.NETインターセプター202は、関連する依存関係ワークアイテムをテクノロジーに依存しないインターセプターマネージャー230に送信することができる。別の例として、Javaインターセプター204は、Javaコンポーネント207がJDBC呼び出しを行ったことを検出し、関連するアクティビティワークアイテムをテクノロジーに依存しないインターセプターマネージャー230に送信することができる。さらに別の例としては、WCFインターセプター203は、WCFコンポーネント206でソフトウェア例外の発生を検出し、関連するイベントワークアイテムをテクノロジーに依存しないインターセプターマネージャー230に送信することができる。
テクノロジーに依存しないインターセプターマネージャー230が.NETインターセプター202から依存関係ワークアイテムを受信すると、.NETワークアイテムマネージャー(たとえば、ワークアイテムマネージャー240が.NETワークアイテムマネージャーのときはワークアイテムマネージャー240)は、依存関係ワークアイテムをワークアイテムキューに追加することができる(たとえば、ワークアイテムマネージャー240が.NETワークアイテムマネージャーのときはワークアイテムキュー242)。ワークアイテムマネージャーのワークアイテムスケジューリングロジック(たとえば、ワークアイテムマネージャー240が.NETワークアイテムマネージャーのときはワークアイテムスケジューリングロジック244)は、分散アプリケーション201のパフォーマンスに対する依存関係ワークアイテムの予測される影響に基づいて、依存関係ワークアイテムの実行をスケジューリングするかどうかを決定することができる。依存関係ワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満の場合、ワークアイテムスケジューリングロジック244は、スレッドプール220のフォアグラウンドのスレッド222またはバックグラウンドのスレッド224の1つにおいて、依存関係ワークアイテムの実行をスケジューリングすることができる。依存関係マネージャー272は、WCFコンポーネント206のソース操作と、.NETコンポーネント205のターゲット操作との間の検出された依存関係を依存関係キャッシュ282に追加することによって、依存関係ワークアイテムを実行することができる。検出した依存関係を依存関係キャッシュ282に追加した後に、依存関係マネージャー272は、検出した依存関係を記憶域サービス290を介して格納することができる。あるいは、依存関係ワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値を超えている場合は、依存関係ワークアイテムを破棄することができる。
テクノロジーに依存しないインターセプターマネージャー230がJavaインターセプター204からアクティビティワークアイテムを受信すると、Javaワークアイテムマネージャー(たとえばワークアイテムマネージャー240がJavaワークアイテムマネージャーのときはワークアイテムマネージャー240)は、アクティビティワークアイテムをワークアイテムキューに追加することができる(たとえばワークアイテムマネージャー240がJavaワークアイテムマネージャーのときにワークアイテムキュー242)。ワークアイテムマネージャーのワークアイテムスケジューリングロジック(たとえばワークアイテムマネージャー240がJavaワークアイテムマネージャーのときはワークアイテムスケジューリングロジック244)は、分散アプリケーション201のパフォーマンスに対するアクティビティワークアイテムによる予測される影響に基づいて、アクティビティワークアイテムの実行をスケジューリングするかどうかを決定することができる。アクティビティワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満の場合、ワークアイテムスケジューリングロジック244は、スレッドプール220のフォアグラウンドのスレッド222またはバックグラウンドのスレッド244の1つにおいて、アクティビティワークアイテムの実行をスケジューリングすることができる。アクティビティマネージャー270は、Javaコンポーネント207によって行われたJDBC呼び出しをアクティビティキュー280に追加することによって、アクティビティワークアイテムを実行することができる。JDBC呼び出しをアクティビティキュー280に追加した後に、アクティビティマネージャー270は、JDBC呼び出しを記憶域サービス290を介して格納することができる。あるいは、アクティビティワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値を超える場合は、アクティビティワークアイテムを破棄することができる。
テクノロジーに依存しないインターセプターマネージャー230がWCFインターセプター203からイベントワークアイテムを受信すると、WCFワークアイテムマネージャー(たとえばワークアイテムマネージャー240がWCFワークアイテムマネージャーのときはワークアイテムマネージャー240)は、イベントワークアイテムをワークアイテムキューに追加することができる(たとえばワークアイテムマネージャー240がWCFワークアイテムマネージャーのときはワークアイテムキュー242)。ワークアイテムマネージャーのワークアイテムスケジューリングロジック(たとえばワークアイテムマネージャー240がWCFワークアイテムマネージャーのときにワークアイテムスケジューリングロジック244)は、分散アプリケーション201のパフォーマンスに対するイベントワークアイテムによる予測される影響に基づいて、イベントワークアイテムの実行をスケジューリングするかどうかを決定することができる。イベントワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満の場合、ワークアイテムスケジューリングロジック244は、スレッドプール220のフォアグラウンドのスレッド222またはバックグラウンドのスレッド244の1つにおいて、イベントワークアイテムの実行をスケジューリングすることができる。次に、WCFコンポーネント206のIDモニター(たとえばIDモニター260の1つ)は、WCFコンポーネント206のIDモニターの1つまたは複数のクライアントにソフトウェア例外を報告することによって、イベントワークアイテムを実行することができる。あるいは、イベントワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値を超えている場合は、イベントワークアイテムを破棄することができる。
図2のシステム200は、分散アプリケーション201を監視することによる全体的なパフォーマンスへの影響を軽減する調整機能を含むことを理解されたい。たとえば、依存関係マネージャー272は、検出した依存関係を依存関係キャッシュ282に入れ、検出された依存関係をバッチに格納することによって、それぞれ時間がかかる可能性がある、依存関係記憶操作の数を減らすことができる。アクティビティマネージャー270は、分散アプリケーション201が比較的アイドル状態のときに(たとえば夜または週末)、アクティビティ情報をアクティビティキュー280に入れ、キューされたアクティビティ情報を格納することによって、アクティビティ記憶操作によるパフォーマンスに対する影響を軽減することができる。ガベージコレクター284は、使用されていないモニターの割り当てを解除することによって、図2のシステム200におけるメモリの占有領域を減らすことができる。ワークアイテムスケジューリングロジック244は、同時に実行するワークアイテムの数を制限することができる。また、ワークアイテムスケジューリングロジック244は、分散アプリケーション201の他のスレッドより優先度が低いスレッドプール220のバックグラウンドのスレッドにおいて、ワークアイテムの実行をスケジューリングすることができる。すなわち、バックグラウンドのスレッドは、スケジューリングされたワークアイテムを実行するために、他のスレッドの実行を中断しない。
図3は、図1のシステム100または図2のシステム200など、分散アプリケーションを監視するシステムと共に使用できるIDモニター320の特定の実施形態を示すブロック図300である。IDモニター320は、コンポーネントモニター330などの1つまたは複数のコンポーネントモニター322を含む監視ツリーのルートでもよい。また、監視ツリーは、ビジネス展望モニター340、操作呼び出しターゲットエンドポイントモニター370、カウンターモニター350、および機器モニター360の1つまたは複数のインスタンスを含むことができる。例示的実施形態では、IDモニター320は、図2のIDモニター260の1つである。
IDモニター320は、分散アプリケーションの特定のコンポーネントに関連していてもよい。たとえば、IDモニター320は、図1のコンポーネント110もしくは120の1つ、または図2のコンポーネント205、206、もしくは207に関連していてもよい。IDモニター320は、IDモニター320が関連するコンポーネントのアドレス321を含むことができる。アドレス321は、インターネットプロトコル(IP)アドレスまたは他のアドレスでもよい。たとえば、IDモニター320は、図1の.NETコンポーネント120のIPアドレスを含むことができる。また、IDモニター320は、コンポーネントモニター330など、1つまたは複数のコンポーネントモニター322を含むことができる。
コンポーネントモニター330は、ビジネス展望モニター340など、1つまたは複数のアクティビティのビジネス展望モニター331および1つまたは複数のビジネス展望モニター332を含むことができる。また、コンポーネントモニター330は、操作呼び出しターゲットエンドポイントモニター370など、1つまたは複数の操作呼び出しモニター333を含むことができる。
ビジネス展望モニター340など、各ビジネス展望モニターは、特定のビジネス展望、つまり特定のメッセージソースのカウンターおよび計器データを格納することができる。たとえば、ビジネス展望モニター340は、図1のWCFコンポーネント110から図1の.NETコンポーネント120に送信されたメッセージを追跡することによって生成されるカウンターおよび計器データを格納することができる。メッセージがXMLメッセージの場合は、ビジネス展望モニター340は、特定のメッセージソースを識別するためにメッセージに対して実行可能なXMLパス言語(XPATH)操作341を含むことができる。また、ビジネス展望モニター340は、特定のメッセージソースに関連する名前空間342を含むことができる。また、ビジネス展望モニター340は、カウンターモニター350など、1つまたは複数のカウンターモニター343を含むことができる。
カウンターモニター350は、分散アプリケーションで特定のイベントの発生を追跡することができる。カウンターモニター350は、特定のイベントを追跡するカウンターの名前351およびカウンターに関連する構成352を含むことができる。たとえば、カウンターモニター350は、図2の.NETコンポーネント205で発生し、図2のWCFコンポーネント206によって引き起こされる例外を追跡することができ、名前351「WCF−>.NET Exception Counter」を含むことができる。また、カウンターモニター350は、機器モニター360など、1つまたは複数の機器モニター353を含むことができる。
機器モニター360などの各機器モニターは、特定の時点で特定のカウンターの値を格納するように構成することができる。たとえば、機器モニター360は、特定の時点で「WCF−>.NET Exception Counter」の値を格納するように構成することができる。特定の実施形態では、機器モニター360は、特定のカウンターの現在値361、特定のカウンターの現在値の状態362、および特定のカウンターに関連する現在のウィンドウ363を含む。また、機器モニター360は前回の値364、前回の値の状態365、および前回のウィンドウ366を含むことができる。現在値の状態362および前回の値の状態365は、特定のカウンターが初期化されていないことを示す状態、特定のカウンターが初期化されたが読み込まれていないことを示す状態、特定のカウンターが有効な値を含むことを示す状態、または特定のカウンターがオーバフローにより不正確な値を含むことを示す状態を含むことができる。特定の実施形態では、特定のカウンターの値が変わるたびに、新しい機器モニターが割り当てられる。
操作呼び出しターゲットエンドポイントモニター370は、特定の操作呼び出し(たとえば関数呼び出しなど)に関連するデータを格納するように構成することができる。特定の実施形態では、操作呼び出しは、分散アプリケーションのコンポーネント内部にある。たとえば、操作呼び出しは、図1の.NETコンポーネント120の内部関数呼び出しでもよい。あるいは、操作呼び出しは、分散アプリケーションの2つのコンポーネント間の操作呼び出しでもよい。たとえば、操作呼び出しは、図1のWCFコンポーネント110のソース操作および図1の.NETコンポーネント120のターゲット操作を保持する関数呼び出しでもよい。特定の実施形態では、操作呼び出しターゲットエンドポイントモニター370は、エンドポイントモニター320に対応するソフトウェアクラスから継承するソフトウェアクラスのオブジェクトであるため、各操作呼び出しターゲットエンドポイントモニターは、エンドポイントアドレス321および1つまたは複数の操作モニター322など、エンドポイントモニター320の機能を含む。
図3に示す特定の監視ツリーは、WCFテクノロジーに固有であることに注意されたい。監視ツリーは、異なるテクノロジーに対して異なる階層のモニターを含むことができる。
図3の監視ツリーは、テクノロジー固有のインターセプターによって生成されるワークアイテムからのデータを整理するために使用して、そのようなデータの取得を促進できることを理解されたい。たとえば、傍受した特定のメッセージからのデータは、操作によって、ビジネス展望によって、またはカウンターによって整理することができる。傍受したメッセージが操作呼び出しを示す場合、データは操作呼び出しによっても整理することができる。
図4は、分散アプリケーションを監視するメッセージ傍受機能を図示するブロック図400である(たとえば、図1の分散アプリケーション102または図2の分散アプリケーション201など)。図4に示す特定の実施形態において、メッセージは、.NETコンポーネント410とJavaコンポーネント440との間で傍受される。メッセージは、.NETコンポーネント410に取り付けられた.NETインターセプター420、およびJavaコンポーネント440に取り付けられたJavaインターセプター430で傍受される。例示的実施形態では、.NETコンポーネント410は、図1の.NETコンポーネント110または図2の.NETコンポーネント205を含み、Javaコンポーネント440は、図2のJavaコンポーネント207を含む。
.NETインターセプター420は、.NETコンポーネント410に取り付けることができるため、.NETコンポーネント410のすべての受信および送信のメッセージは、.NETインターセプター420を通過する。たとえば、.NETインターセプター420は、.NETコンポーネント410の.NETネットワークインターフェイス412に取り付けることができる。.NETコンポーネント410の受信および送信のメッセージは、XMLメッセージでもよく、または他のメッセージ形式でもよい。
同様に、Javaインターセプター430は、Javaコンポーネント440に取り付けることができるため、Javaコンポーネント440のすべての受信および送信のメッセージは、Javaインターセプター430を通過する。たとえば、Javaインターセプター430は、Javaコンポーネント440のJavaネットワークインターフェイス442に取り付けることができる。Javaコンポーネント440の受信および送信のメッセージは、XMLメッセージでもよく、または他のメッセージ形式でもよい。
動作中に、.NETコンポーネント410は、Javaコンポーネント440にメッセージ460を送信することができる。メッセージ460は、.NETネットワークインターフェイス412からNETコンポーネント410を離れ、.NETネットワークインターフェイス412に取り付けられた.NETインターセプター420によって傍受されうる。メッセージ460を傍受すると、.NETインターセプター420は、.NETコンポーネント410の依存関係を検出する試みにおいて、.NETコンポーネント410を含む特定の実行パスでアクティビティ情報を追跡するため、または.NETコンポーネント410で特定のイベントの発生を追跡するために、メッセージ460を検査することができる。傍受したメッセージ460を検査した後、.NETインターセプター420は、傍受したメッセージ460をJavaコンポーネント440に送信することができる。
Javaコンポーネント440に到着する前に、メッセージ460をもう一度傍受することができる。このときは、Javaインターセプター430によって傍受する。Javaインターセプター430は、.NETインターセプター420に関して上に記述したように、傍受したメッセージ460に対して同様の操作を実行することができる。また、たとえば、Javaインターセプター430は、Javaコンポーネント440の依存関係を検出する試みにおいて、Javaコンポーネント440を含む特定の実行パスでアクティビティ情報を追跡するために、またはJavaコンポーネント440で特定のイベントの発生を追跡するために、メッセージ460を検査することができる。
どちらの方向に送信されたメッセージも傍受および検査できることに注意されたい。たとえば、Javaコンポーネント440から.NETコンポーネント410に送信される第2のメッセージ470も、依存関係を検出するため、アクティビティ情報を追跡するため、およびイベント発生を追跡するために傍受および検査することができる。図4に示す特定の実施形態は、両方のコンポーネントに取り付けられたインターセプターを示しているが、1つのインターセプターだけが2つのコンポーネント間のメッセージパスにある場合でも、依存関係は2つのコンポーネント間で検出できることに注意されたい。たとえば、Javaインターセプター430が存在しない場合でも、.NETコンポーネント410とJavaコンポーネント440との間の依存関係は、.NETインターセプター420によって検出することができる。同様に、.NETインターセプター420が存在しない場合でも、.NETコンポーネント410とJavaコンポーネント440との間の依存関係は、Javaインターセプター430によって検出することができる。
図4に示すように、メッセージ傍受機能は異なるテクノロジー(たとえば.NETとJavaなど)に関連する分散アプリケーションのコンポーネントを監視するために使用できることを理解されたい。
図5は、分散アプリケーションを監視する方法500の特定の実施形態を示す流れ図である。例示的実施形態では、方法500は、図1のシステム100または図2のシステム200によって実行することができる。方法500は、参照番号502において、分散アプリケーションの複数のコンポーネントを識別するステップを含む。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、WCFコンポーネント110および.NETコンポーネント120を識別することができる。また、方法500は、参照番号504において、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップを含む。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、WCFコンポーネント110がWCFテクノロジーに関連することを識別することができる。
方法500は、参照番号506において、識別した特定のテクノロジーに基づいて特定のコンポーネントにテクノロジー固有のインターセプターを取り付けるステップと、取り付けられたテクノロジー固有のインターセプターを使用して、特定のコンポーネントによって送信または受信されるメッセージを傍受するステップとをさらに含む。たとえば、図1において、テクノロジーインターセプターマネージャー130は、WCFインターセプター112をWCFコンポーネント110に取り付けることができ、WCFインターセプター112は、WCFコンポーネント110によって送信または受信されるメッセージを傍受することができる。また、方法500は、参照番号508において、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成するステップを含む。たとえば、図1において、WCFインターセプター112は、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成することができる。
また、方法500は、参照番号510において、少なくとも1つの潜在的なワークアイテムをスケジューリングするかどうかを決定するステップを含む。決定は、分散アプリケーションのパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて行われる。たとえば、図1において、WCFワークアイテムスケジューリングロジック144は、分散アプリケーション102のパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて、少なくとも1つの潜在的なワークアイテムをスケジューリングするかどうかを決定することができる。
図5の方法500は、様々なコンポーネントを横断して分散され、様々なテクノロジーを含む分散アプリケーションを監視するために使用することができることを理解されたい。さらに、図5の方法500は、分散アプリケーションのパフォーマンスに対する予測される影響が大きいワークアイテムをスケジューリングしないことによって、そのような監視による全体的なパフォーマンスに対する影響を軽減できることを理解されたい。たとえば、図5の方法500は、キューに入れられるワークアイテムの数を制限することによって、そのような監視による全体的なパフォーマンスに対する影響を軽減することができる。そのため、図5の方法500は、必要に応じて、パフォーマンスのために監視精度を犠牲にすることができるため、リアルタイム、ほぼリアルタイム、または重要な役割を担う分散アプリケーションの動作は妨害されないことを理解されたい。
図6は、分散アプリケーションを監視する方法600の他の特定の実施形態を示す流れ図である。例示的実施形態では、方法600は、図1のシステム100または図2のシステム200によって実行することができる。方法600は、参照番号602において、分散アプリケーションの複数のコンポーネントを識別するステップを含む。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、WCFコンポーネント110および.NETコンポーネント120を識別することができる。また、方法600は、参照番号604において、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップを含む。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、WCFコンポーネント110がWCFテクノロジーに関連することを識別することができる。
方法600は、参照番号606において、識別した特定のテクノロジーに基づいて、テクノロジー固有のインターセプターを特定のコンポーネントに取り付けるステップと、取り付けられたテクノロジー固有のインターセプターを使用して、特定のコンポーネントによって送信または受信されるメッセージを傍受するステップとをさらに含む。たとえば、図1において、テクノロジーインターセプターマネージャー130は、WCFインターセプター112をWCFコンポーネント110に取り付けることができ、WCFインターセプター112は、WCFコンポーネント110によって送信または受信されたメッセージを傍受することができる。また、方法600は、参照番号608において、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成するステップを含む。たとえば、図1において、WCFインターセプター112は、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成することができ、少なくとも1つの潜在的なワークアイテムをテクノロジー固有のインターセプターマネージャーに送信することができる。ここで、少なくとも1つの潜在的なワークアイテムは、WCFワークアイテムキュー142に挿入される。
また、方法600は、参照番号610において、分散アプリケーションのパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響を計算するステップを含む。予測される影響は、プロセッサ使用率に対する影響、メッセージ待機時間に対する影響、または実行キューの長さに対する影響でもよい。たとえば、図1において、ワークアイテムスケジューリングロジック144は、少なくとも1つの潜在的なワークアイテムによる予測される影響を計算することができる。ここで、予測される影響は、分散アプリケーション102のプロセッサ使用率に対する影響、分散アプリケーション102のメッセージ待機時間に対する影響、または分散アプリケーション102の実行キューの長さに対する影響である。また、方法600は、参照番号612において、予測される影響が受け入れ可能なパフォーマンスへの影響のしきい値未満かどうかを決定するステップを含む。たとえば、図1において、ワークアイテムスケジューリングロジック144は、少なくとも1つの潜在的なワークアイテムによる予測されるパフォーマンスに対する影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満かどうかを決定することができる。
参照番号614において、予測される影響が受け入れ可能なパフォーマンスへの影響のしきい値未満であると決定された場合、方法は、少なくとも1つの潜在的なワークアイテムの実行をスケジューリングするステップと、少なくとも1つの潜在的なワークアイテムを実行するステップとを含む。たとえば、予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満であると決定された場合、WCFワークアイテムスケジューリングロジック144は、少なくとも1つの潜在的なワークアイテムの実行をスケジューリングすることができ、少なくとも1つの潜在的なワークアイテムを実行することができる。予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満ではないと決定された場合、方法は、参照番号616において、少なくとも1つの潜在的なワークアイテムを破棄するステップを含む。たとえば、予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満ではないと決定された場合、WCFワークアイテムスケジューリングロジック144は、少なくとも1つの潜在的なワークアイテムの実行をスケジューリングすることなく、ワークアイテムキュー142から削除することによって、少なくとも1つの潜在的なワークアイテムを破棄することができる。あるいは、図1において、WCFワークアイテムスケジューリングロジック144は、少なくとも1つの潜在的なワークアイテムがWCFワークアイテムキュー142に残ることを許可し、ここで、少なくとも1つの潜在的なワークアイテムは自動的に期限が切れる。
図6の方法600は、分散アプリケーションのパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて、少なくとも1つの潜在的なワークアイテムの実行を選択的にスケジューリングするために使用することができることを理解されたい。さらに、パフォーマンスに対する予測される影響が大きいワークアイテムは、ワークアイテムキューから削除して、続いて受信するワークアイテムのためにワークアイテムキューの空間を解放できることを理解されたい。
図7は、分散アプリケーションを監視する方法700の他の特定の実施形態を示す流れ図である。例示的実施形態では、方法700は、図1のシステム100または図2のシステム200によって実行することができる。方法700は、参照番号702において、分散アプリケーションの複数のコンポーネントを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、.NETコンポーネント205、WCFコンポーネント206、Javaコンポーネント207、またはそれらの任意の組み合わせを識別することができる。また、方法700は、参照番号704において、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFコンポーネント206がWCFテクノロジーに関連することを識別することができる。
方法700は、参照番号706において、識別した特定のテクノロジーに基づいて、テクノロジー固有のインターセプターを特定のコンポーネントに取り付けるステップと、取り付けられたテクノロジー固有のインターセプターを使用して、特定のコンポーネントによって送信または受信されるメッセージを傍受するステップとを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFインターセプター203をWCFコンポーネント206に取り付けることができ、WCFインターセプター203は、WCFコンポーネント206によって送信または受信されたメッセージを傍受することができる。また、方法700は、参照番号708において、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成するステップを含む。たとえば、WCFインターセプター203は、傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成することができる。また、方法700は、参照番号710において、少なくとも1つの潜在的なワークアイテムの実行をスケジューリングするかどうかを決定するステップを含む。決定は、分散アプリケーションのパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて行われる。たとえば、図2において、WCFワークアイテムスケジューリングロジック244は、分散アプリケーション201のパフォーマンスに対する少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて、少なくとも1つの潜在的なワークアイテムをスケジューリングするかどうかを決定することができる。
また、方法700は、参照番号712において、発生した例外の数または報告されるエラーの数など、分散アプリケーションに関連する少なくとも1つのメトリックを計算するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFインターセプター203からWCFコンポーネント206での例外を示すワークアイテムを受信して、受信したそのようなワークアイテムの数を計算することができる。特定の実施形態では、例外は、図3のIDモニター320など、IDモニターによって計算することができる。方法700は、参照番号714において、分散アプリケーションの障害状態を検出するステップをさらに含む。たとえば、図2の分散アプリケーション201の障害状態を検出することができる。また、方法700は、参照番号716において、少なくとも1つのメトリックに基づいて、障害状態の潜在的な原因として特定のコンポーネントを識別するステップを含む。たとえば、図2において、WCFコンポーネント206は、WCFコンポーネント206の例外の数に基づいて、分散アプリケーション201の障害状態の潜在的な原因として識別されうる。
図7の方法700は、特定のコンポーネントを監視する間に生成されるメトリックに基づいて、分散アプリケーションのコンポーネントを監視するため、および分散アプリケーションの障害の潜在的な原因として特定のコンポーネントを識別するために使用できることを理解されたい。このため、図7の方法700は、分散アプリケーションの障害状態を分析し応答するためにかかる時間を短縮することができる。さらに、分散アプリケーションのコンポーネントを監視する間に計算されるメトリック(たとえば例外またはエラーの数など)は、将来的な障害イベントを予測して防ぐために使用できることを理解されたい。たとえば、特定のコンポーネントによって発生した例外の数が増加すると、IT管理者は例外の増加を告げる通知を受けられるため、特定のコンポーネントに障害が発生する前に、IT管理者は特定のコンポーネントの問題を解決することができる。
図8は、分散アプリケーションを監視する方法800の他の特定の実施形態を示す流れ図である。例示的実施形態では、方法800は、図1のシステム100または図2のシステム200によって実行することができる。方法800は、参照番号802において、分散アプリケーションの複数のコンポーネントを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、.NETコンポーネント205、WCFコンポーネント206、Javaコンポーネント207、またはそれらの任意の組み合わせを識別することができる。また、方法800は、参照番号804において、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFコンポーネント206がWCFテクノロジーに関連することを識別することができる。
方法800は、参照番号806において、識別した特定のテクノロジーに基づいて、テクノロジー固有のインターセプターを特定のコンポーネントに取り付けるステップをさらに含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFインターセプター203をWCFコンポーネント206に取り付けることができる。方法800は、参照番号808、810、812、および814を含むイベント監視のパス、ならびに参照番号816、818、820、822、および824を含むアクティビティ監視のパスという2つのパスを含む。
イベント監視のパスにおいて、方法800は、参照番号808において、特定のイベントの発生を追跡するためにカウンターモニターを割り当てるステップを含む。たとえば、図2において、カウンターモニターは、WCFコンポーネント206で例外を追跡するために割り当てられうる。ここで、カウンターモニターは、WCFコンポーネント206のIDモニター(たとえばIDモニター260の1つなど)の監視ツリーに配置される。特定の実施形態では、割り当てられるカウンターモニターは、図3のカウンターモニター350を含む。また、方法800は、参照番号810において、テクノロジー固有のインターセプターで特定のイベントに関連するメッセージを傍受するステップを含む。たとえば、図2において、WCFインターセプター203は、WCFコンポーネント206での例外の発生を示すメッセージを傍受することができる。方法800は、参照番号812において、特定のイベントの発生を示すワークアイテムを生成するステップをさらに含む。たとえば、図2において、WCFインターセプター203は、WCFコンポーネント206での例外の発生を示すワークアイテムを生成することができる。また、方法800は、参照番号814において、カウンターモニターの1つまたは複数のクライアントに特定のイベントの発生を報告するステップを含む。特定の実施形態では、1つまたは複数のクライアントがカウンターモニターをポーリングするときに、特定のイベントの発生を報告することができる。たとえば、図2において、WCFコンポーネント206での例外の発生は、WCFコンポーネント206のIDモニター(たとえばIDモニター260の1つなど)の1つまたは複数のクライアントに報告することができる。
アクティビティ監視のパスにおいて、方法800は、参照番号816において、特定の実行パスに沿ってアクティビティを追跡するためにアクティビティモニターを割り当てるステップを含む。たとえば、図2において、アクティビティのビジネス展望モニターは、WCFコンポーネント206を含む分散アプリケーション201の特定の実行パスに沿ってアクティビティを追跡するために割り当てられうる。ここで、アクティビティのビジネス展望モニターは、WCFコンポーネント206のエンドポイントモニター(たとえばエンドポイントモニター260の1つなど)の監視ツリーに配置される。特定の実施形態では、アクティビティのビジネス展望モニターは、図3のビジネス展望モニター340を含む。また、方法800は、参照番号818において、テクノロジー固有のインターセプターで特定の実行パスに関連するメッセージを傍受するステップを含む。たとえば、図2において、WCFインターセプター203は、分散アプリケーション201の特定の実行パスに沿ってアクティビティを示すメッセージを傍受することができる。方法800は、参照番号820において、特定の実行パスに関連するアクティビティ情報を含むワークアイテムを生成するステップをさらに含む。たとえば、図2のWCFインターセプター203は、特定の実行パスに関連するアクティビティ情報を含むワークアイテムを生成することができる。また、方法800は、参照番号822において、アクティビティ情報をアクティビティキューに格納するステップと、参照番号824において、アクティビティキューから保存場所に記憶域サービスを介してアクティビティ情報を転送するステップとを含む。たとえば、図2において、アクティビティマネージャー270は、アクティビティ情報をアクティビティキュー280に格納することができ、続いてアクティビティキュー280から保存場所に記憶域サービス290を介してアクティビティ情報を転送することができる。
図8の方法800は、分散アプリケーションで発生する可能性がある例外やエラーなどのイベントを監視するために使用できることを理解されたい。さらに、図8の方法800は、分散アプリケーションの特定の実行パスに沿ってアクティビティを追跡するために使用できることも理解されたい。たとえば、図8の方法800は、誤ってまたは非効率的に実行している分散アプリケーションの実行パスに沿ってアクティビティをトレースするために、IT管理者が使用することができる。
図9は、分散アプリケーションを監視する方法900の他の特定の実施形態を示す流れ図である。例示的実施形態では、方法900は、図1のシステム100または図2のシステム200によって実行することができる。方法900は、参照番号902において、分散アプリケーションの複数のコンポーネントを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、.NETコンポーネント205、WCFコンポーネント206、Javaコンポーネント207、またはそれらの任意の組み合わせを識別することができる。また、方法900は、参照番号904において、複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップを含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFコンポーネント206がWCFテクノロジーに関連することを識別することができる。
方法900は、参照番号906において、識別された特定のテクノロジーに基づいて、テクノロジー固有のインターセプターを特定のコンポーネントに取り付けるステップをさらに含む。たとえば、図2において、テクノロジーに依存しないインターセプターマネージャー230は、WCFインターセプター203をWCFコンポーネント206に取り付けることができる。また、方法900は、参照番号908において、特定のコンポーネントで特定の関数の呼び出しを追跡するために操作呼び出しモニターを割り当てるステップを含む。たとえば、操作呼び出しモニターは、WCFコンポーネント206で特定の関数の呼び出しを追跡するために割り当てられうる。ここで、操作呼び出しモニターは、WCFコンポーネント206のエンドポイントモニター(たとえばエンドポイントモニター260の1つなど)の監視ツリーに配置される。特定の実施形態では、割り当てられる操作呼び出しモニターは、図3の操作呼び出しターゲットエンドポイントモニター370を含むことができる。
方法900は、参照番号910において、特定の関数に関連する特定のコンポーネントによって送信および受信されるメッセージを傍受するステップを含む。たとえば、図2において、WCFインターセプター203は、WCFコンポーネント206によって送信および受信されたメッセージを傍受することができる。ここで、傍受するメッセージは、特定の関数に関係する。また、方法900は、参照番号912において、特定の関数のソース操作と、特定の関数のターゲット操作との間の依存関係を識別するステップを含む。たとえば、図2において、WCFインターセプター203は、特定の関数のソース操作と、特定の関数のターゲット操作との間の依存関係を識別することができる。特定の実施形態では、ソース操作とターゲット操作は、分散アプリケーション201の異なるコンポーネントに配置される(たとえばソース操作はWCFコンポーネント206に配置され、ターゲット操作は.NETコンポーネント205に配置される)。
方法900は、参照番号916において、依存関係を依存関係キャッシュに入れるステップをさらに含む。たとえば、図2において、依存関係マネージャー272は、依存関係を依存関係キャッシュ282に入れることができる。また、方法900は、参照番号918において、依存関係が以前に格納されたかどうかを決定するステップを含む。たとえば、図2の依存関係マネージャー272は、依存関係が以前に格納されたかどうかを決定することができる。
依存関係が以前に格納されていない場合、方法900は、参照番号920において、記憶域サービスを介して保存場所に依存関係を転送するステップを含む。たとえば、図2において、依存関係マネージャー272が、依存関係を依存関係キャッシュ282から保存場所に記憶域サービス290を介して転送することができる場合である。依存関係が以前に格納された場合、方法900は、参照番号922において、依存関係を格納しないステップを含む。たとえば、図2において、依存関係マネージャー272は、依存関係を格納せずに、依存関係キャッシュ282から依存関係を削除することができる。
図9の方法900は、コンポーネント間の依存関係など、分散アプリケーションの様々なソース操作と、ターゲット操作との間の依存関係を検出するために使用できることを理解されたい。さらに、図9の方法900は、以前に格納されていない検出された依存関係のみを格納することによって、そのような依存関係の検出によるパフォーマンスに対する影響を軽減できることを理解されたい。
図10は、テクノロジーに依存しないインターセプターマネージャーでワークアイテムを選択的にスケジューリングする方法1000の特定の実施形態を示す流れ図である。例示的実施形態では、方法1000は、図1のテクノロジーに依存しないインターセプターマネージャー130または図2のテクノロジーに依存しないインターセプターマネージャー230によって実行することができる。方法100は、参照番号1002において、テクノロジーに依存しないインターセプターマネージャーで、分散アプリケーションの第1のコンポーネントに取り付けられた第1のテクノロジー固有のインターセプターから第1のワークアイテムを受信するステップを含む。第1のテクノロジー固有のインターセプターは第1のテクノロジーに固有であり、第1のコンポーネントは第1のテクノロジーに関連する。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、分散アプリケーション102のWCFコンポーネント110に取り付けられたWCFインターセプター112から第1のワークアイテムを受信することができる。
また、方法1000は、参照番号1004において、テクノロジーに依存しないインターセプターマネージャーで、分散アプリケーションの第2のコンポーネントに取り付けられた第2のテクノロジー固有のインターセプターから第2のワークアイテムを受信するステップを含む。第2のテクノロジーインターセプターは、第2のテクノロジーに固有であり、第2のコンポーネントは、第2のテクノロジーに関連し、第2のテクノロジーは、第1のテクノロジーとは異なる。たとえば、図1において、テクノロジーに依存しないインターセプターマネージャー130は、分散アプリケーション102の.NETコンポーネント120に取り付けられた.NETインターセプター122から第2のワークアイテムを受信することができる。
方法1000は、参照番号1006において、第1のワークアイテムおよび第2のワークアイテムの実行をスケジューリングするかどうかを決定するステップをさらに含む。決定は、分散アプリケーションに対する第1のワークアイテムによる第1の影響に基づいて、および分散アプリケーションに対する第2のワークアイテムによる予測される影響に基づいて行われる。たとえば、図1において、WCFワークアイテムスケジューリングロジック144は、分散アプリケーション102に対する第1のワークアイテムによる第1の影響に基づいて、第1のワークアイテムをスケジューリングするかどうかを決定することができ、.NETワークアイテムスケジューリングロジック154は、分散アプリケーション102に対する第2のワークアイテムによる第2の影響に基づいて、第2のワークアイテムをスケジューリングするかどうかを決定することができる。
図10の方法1000は、ワークアイテムの予測される影響に基づいて、ワークアイテムの実行を選択的にスケジューリングするために、テクノロジーに依存しないインターセプターマネージャーによって使用できることを理解されたい(たとえば図1のテクノロジーに依存しないインターセプターマネージャー130または図2のテクノロジーに依存しないインターセプターマネージャー230など)。したがって、図10の方法1000は、リアルタイム、ほぼリアルタイム、または重要な役割を担う分散アプリケーションの通常のパフォーマンスを妨げることを避けるために、テクノロジーに依存しないインターセプターマネージャーによって使用することができる。テクノロジーに依存しないインターセプターマネージャーは、リアルタイム、ほぼリアルタイム、または重要な役割を担う分散アプリケーションに対する予測される影響が大きいワークアイテムをスケジューリングしなくてよい。
図11は、分散コンピューティング環境1100の特定の実施形態を図示する一般的な図である。分散コンピューティング環境1100は、監視されたWebクライアント1111、監視されたWebサーバー1112、監視されたアプリケーションサーバー1113、および監視されたデータベースサーバー1114など、1つまたは複数の監視されたアプリケーションコンポーネントを含む分散アプリケーション1110を含むことができる。また、分散コンピューティング環境1100は、分散アプリケーション1110のコンポーネントとルート管理サーバー1130、運用データベースサーバー1140、およびデータウェアハウスサーバー1150に結合された管理サーバー1120を含むことができる。特定の実施形態では、分散コンピューティング環境1100は、分散アプリケーション1110の監視レポートを生成するように構成されたレポートサーバー1160も含む。例示的実施形態では、分散アプリケーション1110は、図1の分散アプリケーション102または図2の分散アプリケーション201を含むことができる。
管理サーバー1120は、図1のテクノロジーに依存しないインターセプターマネージャー130または図2のテクノロジーに依存しないインターセプターマネージャー230など、テクノロジーに依存しないインターセプターマネージャーを含む。また、管理サーバー1120は、ルート管理サーバー1130と通信することができる。管理サーバー1120は、運用データベースサーバー1140およびデータウェアハウスサーバー1150から、依存関係データおよびアクティビティデータなどの情報を格納し取得することができる。特定の実施形態では、管理サーバー1120は、レポートサーバー1160を介して検出データおよび依存関係データを含む監視レポートを生成するように構成される。
動作中に、監視されたWebクライアント1111、監視されたWebサーバー1112、監視されたアプリケーションサーバー1113、および監視されたデータベースサーバー1114は、1つまたは複数の取り付けられたテクノロジー固有のインターセプターによって監視することができる。テクノロジー固有のインターセプターは、ワークアイテムを生成し、管理サーバー1120のテクノロジーに依存しないインターセプターマネージャーに送信することができる。次に、管理サーバー1120のテクノロジーに依存しないインターセプターマネージャーは、分散アプリケーション1110に対する予測される影響に基づいて、または特定の分散アプリケーションコンポーネントに対する予測される影響に基づいて(たとえばコンポーネント1111〜1114の1つなど)、受信したワークアイテムの実行を選択的にスケジューリングすることができる。
管理サーバー1120は、異なる種類の分散アプリケーションコンポーネントで、関数呼び出し、アクティビティ、およびイベントを監視できることを理解されたい(たとえばWebクライアント、Webサーバー、アプリケーションサーバー、およびデータベースサーバーなど)。
図12は、本開示に従って、コンピュータに実装された方法、コンピュータプログラム製品、およびシステムコンポーネントの実施形態をサポートするように動作可能なコンピューティングデバイス1210を含むコンピューティング環境1200のブロック図である。
コンピューティングデバイス1210は、典型的には、少なくとも1つのプロセッサ1220およびシステムメモリ1230を含む。コンピューティングデバイスの正確な構成および種類に基づいて、システムメモリ1230は、揮発性(RAM(random access memory)など)、不揮発性(ROM(read-only memory)、フラッシュメモリ、および電力が提供されていないときでも格納されているデータを維持する同様のメモリデバイスなど)、または2つの組み合わせでもよい。システムメモリ1230は、典型的には、オペレーティングシステム1232、1つまたは複数のアプリケーションプラットフォーム1234、1つまたは複数のアプリケーション1236を含み、プログラムデータ1238を含むことができる。たとえば、システムメモリ1230は、図1のWCFコンポーネント110、図2のWCFコンポーネント206、図1の.NETコンポーネント120、図2の.NETコンポーネント205、または図2のJavaコンポーネント207など、分散アプリケーションの1つまたは複数のコンポーネントを含むことができる。コンピューティングデバイス1210がコンポーネントを含む場合、コンピューティングデバイス1210は、コンポーネントに取り付けられた1つまたは複数のテクノロジー固有のインターセプターも含むことができる。たとえば、コンピューティングデバイス1210は、図1のWCFインターセプター112、図2のWCFインターセプター203、図1の.NETインターセプター122、図2の.NETインターセプター202、または図2のJavaインターセプター204を含むことができる。別の例として、システムメモリ1230は、図1のテクノロジーに依存しないインターセプターマネージャー130または図2のテクノロジーに依存しないインターセプターマネージャー230を含むことができる。
特定の実施形態では、分散アプリケーション(たとえば図1の分散アプリケーション102または図2の分散アプリケーション201など)は、複数のコンピューティングデバイス(たとえばコンピューティングデバイス1210など)を含むことができ、そのようなコンピューティングデバイスはそれぞれ、分散アプリケーションの1つまたは複数のコンポーネントを含むことができる。
また、コンピューティングデバイス1210は、追加の特徴または機能を持つことができる。たとえば、磁気ディスク、光ディスク、テープ、および標準サイズまたは小型のフラッシュメモリカードなど、コンピューティングデバイス1210は、リムーバブルおよび/または非リムーバブルの追加のデータ記憶装置を含むこともできる。そのような追加の記憶域は、リムーバブル記憶域1240および非リムーバブル記憶域1250によって図12に示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムコンポーネント、または他のデータなど、情報を記憶するための任意の方法またはテクノロジーに実装された、揮発性および/または不揮発性記憶域およびリムーバブルおよび/または非リムーバブル媒体を含むことができる。システムメモリ1230、リムーバブル記憶域1240、および非リムーバブル記憶域1250はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM(electrically erasable programmable read-only memory)、フラッシュメモリもしくは他のメモリテクノロジー、CD(compact disk)、DVD(digital versatile disk)、もしくは他の光学的記憶域、磁気カセット、磁気テープ、磁気ディスク記憶域、もしくは他の磁気記憶装置、または希望する情報を格納するために使用することができ、コンピューティングデバイス1210によってアクセスすることができる他の媒体を含むが、これらに限定されるものではない。そのような任意のコンピュータ記憶媒体がコンピューティングデバイス1210の一部となりうる。また、コンピューティングデバイス1210は、キーボード、マウス、ペン、音声入力機器、タッチ入力装置などの入力装置1260(複数可)を装備することができる。ディスプレイ、スピーカー、プリンタなどの出力装置1270(複数可)も含めることができる。
また、コンピューティングデバイス1210は、1つまたは複数のクライアントコンピューティングシステムまたは他のサーバーなど、有線ネットワークまたは無線ネットワークを介して、コンピューティングデバイス1210が他のコンピューティングデバイス1290と通信することを可能にする1つまたは複数の通信接続1280を含む。たとえば、1つまたは複数の通信接続1280は、図5のネットワークインターフェイス512または542を含むことができる。1つまたは複数の通信接続1280は通信媒体の例である。限定のためではなく、例を挙げると、通信媒体は、有線ネットワークまたは直接的な有線接続などの有線媒体、ならびにアコースティック、RF、赤外線、および他の無線媒体などの無線媒体を含む。しかし、図12に示した、または前の段落に記述したコンポーネントまたは装置のすべてが、本明細書に記述する実施形態をサポートするのに必要だとは限らないことを理解されたい。
本明細書に記述した実施形態の実例は、様々な実施形態の構造についての一般的な理解を得ることを意図するものである。実例は、本明細書に記述した構造または方法を利用する装置およびシステムのすべての要素および特徴の完全な記述としての役割を果たすことを意図するものではない。当業者であれば、開示を見ると他の多くの実施形態が可能なことは自明であろう。開示から他の実施形態を利用し派生させることができるため、本開示の範囲から逸脱することなく、構造的および論理的な置換ならびに変更を行うことができる。したがって、開示および図面は限定的なものではなく実例と見なされるものである。
本明細書に開示した実施形態に関して記述し様々な実例となる論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実装できることは当業者には自明であろう。ハードウェアおよびソフトウェアの互換性を明白に図示するために、様々な実例となるコンポーネント、ブロック、構成、モジュール、回路、またはステップを、それらの機能の点から一般的に記述した。そのような機能をハードウェアまたはソフトウェアのどちらとして実装するかは、特定の用途および全体的なシステムに課された設計制約に依存している。当業者であれば、記述された機能を特定の用途ごとに様々な方法で実装することができるが、そのような実装の決定は、本開示の範囲から逸脱するものと解釈するべきではない。
本明細書に開示した実施形態に関して記述した方法のステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、または2つの組み合わせに直接組み込むことができる。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM(read-only memory)、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または技術的に既知の他の任意の形式の記憶媒体など、コンピュータ可読媒体に存在することができる。代表的な記憶媒体は、プロセッサが記憶媒体から情報を読み込んだり、情報を書き込んだりできるように、プロセッサに結合される。代替案では、記憶媒体はプロセッサに内蔵されるか、またはプロセッサおよび記憶媒体は、コンピュータシステムの個別部品として存在することができる。
本明細書では、特定の実施形態を図示して記述したが、同一または類似の目的を達成するために設計された、いかなる後続の機構も、示された特定の実施形態の代わりとなるものであることを理解されたい。本開示は、様々な実施形態のあらゆる後続の修正または変形形態を包含することを意図するものである。
本開示の要約書は、請求項の範囲または意味を解釈または限定するために使用されないことを理解したうえで提供される。これに加えて、前述の発明を実施するための形態では、開示を簡素化するために、様々な特徴をまとめたり、または単一の実施形態に記述したりしていることがある。本開示は、請求された実施形態が、各請求項に明示的に列挙したより多くの特徴を必要とするという意図を示すものと解釈してはいけない。むしろ、以下の請求項が示すように、本発明の主題は、開示した実施形態のすべての特徴を示すものではない。
開示した実施形態に関する前の記述は、開示した実施形態を任意の当業者が構成または使用できるように提供するものである。これらの実施形態に様々な変更が可能なことは当業者には明白であり、本明細書に定義した一般的な原理は、本開示の範囲から逸脱することなく他の実施形態に適用することができる。このため、本開示は、本明細書に示した実施形態に限定することを意図するものではなく、添付の特許請求の範囲に定義する原理および新規な特徴に矛盾しない最大限の範囲を認めることを意図するものである。

Claims (19)

  1. コンピュータ装置上の1つまたは複数のプロセッサが、分散アプリケーションの複数のコンポーネントを識別するステップと、
    前記プロセッサが、前記複数のコンポーネントの特定のコンポーネントに関連する特定のテクノロジーを識別するステップと、
    前記プロセッサが、前記識別した特定のテクノロジーに基づいて、テクノロジー固有のインターセプターを前記特定のコンポーネントに取り付け、前記取り付けられたテクノロジー固有のインターセプターを使用して、前記特定のコンポーネントによって送信または受信されたメッセージを傍受するステップと、
    特定の傍受したメッセージを検出したことに応答して、
    前記プロセッサが、前記特定の傍受したメッセージに基づいて、少なくとも1つの潜在的なワークアイテムを生成するステップと、
    前記プロセッサが、前記分散アプリケーションのパフォーマンスに対する前記少なくとも1つの潜在的なワークアイテムによる予測される影響に基づいて、前記少なくとも1つの潜在的なワークアイテムの実行をスケジューリングするかどうかを決定するステップと)
    を含むことを特徴とする監視方法。
  2. 前記少なくとも1つの潜在的なワークアイテムによる予測される影響が、受け入れ可能なパフォーマンスへの影響のしきい値未満である場合、前記少なくとも1つの潜在的なワークアイテムの実行がスケジューリングされ、前記少なくとも1つの潜在的なワークアイテムによる予測される影響が、前記受け入れ可能なパフォーマンスへの影響のしきい値を超えている場合、前記少なくとも1つの潜在的なワークアイテムの実行はスケジューリングされないことを特徴とする請求項1に記載の方法。
  3. 前記少なくとも1つの潜在的なワークアイテムによる予測された影響は、前記分散アプリケーションのプロセッサ使用率、前記分散アプリケーションのメッセージ待機時間、前記分散アプリケーションの実行キューの長さ、またはそれらの任意の組み合わせに対する影響を示すことを特徴とする請求項1に記載の方法。
  4. ワークアイテムの有効期間内にスケジューリングされていない場合、前記少なくとも1つの潜在的なワークアイテムは期限が切れることを特徴とする請求項1に記載の方法。
  5. 前記プロセッサが、前記分散アプリケーションで前記少なくとも1つの潜在的なワークアイテムを実行するステップをさらに含み、前記少なくとも1つの潜在的なワークアイテムは、前記分散アプリケーションに関連する検出した依存情報を格納する命令、前記分散アプリケーションに関連する監視されるアクティビティ情報を格納する命令、前記分散アプリケーションに関連するパフォーマンスカウンター情報を報告する命令、またはそれらの任意の組み合わせを含むことを特徴とする請求項1に記載の方法。
  6. 前記プロセッサが、前記傍受したメッセージに基づいて、前記特定のコンポーネントで特定の関数の呼び出しを追跡するために、操作呼び出しモニターを割り当てるステップをさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記特定の関数は、ソース操作およびターゲット操作を保持し、前記少なくとも1つの潜在的なワークアイテムは、前記ソース操作と前記ターゲット操作との間の依存関係を示し、前記少なくとも1つの潜在的なワークアイテムを実行するステップは、前記依存関係を依存関係キャッシュに格納するステップを含むことを特徴とする請求項6に記載の方法。
  8. 前記依存関係が以前に格納されていないと決定するステップに応じて、前記プロセッサが、前記依存関係キャッシュから保存場所に記憶域サービスを介して前記依存関係を転送するステップをさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記プロセッサが、前記特定のコンポーネントで特定の実行パスのアクティビティを追跡するためにアクティビティモニターを割り当てるステップをさらに含み、前記少なくとも1つの潜在的なワークアイテムは、前記特定の実行パスに関連するアクティビティ情報を含み、前記少なくとも1つの潜在的なワークアイテムを実行するステップは、前記アクティビティ情報をアクティビティキューに格納するステップを含むことを特徴とする請求項5に記載の方法。
  10. 前記プロセッサが、前記傍受したメッセージに基づいて、特定のイベントの発生を追跡するためにカウンターモニターを割り当てるステップをさらに含み、前記少なくとも1つの潜在的なワークアイテムは、前記特定のイベントの少なくとも1つの発生を示し、前記少なくとも1つの潜在的なワークアイテムを実行するステップは、前記特定のイベントの前記少なくとも1つの発生を前記カウンターモニターの1つまたは複数のクライアントに報告するステップを含むことを特徴とする請求項5に記載の方法。
  11. 前記プロセッサが、前記分散アプリケーションに関連する少なくとも1つのメトリックを計算するステップであって、前記少なくとも1つのメトリックは、発生した例外の数、報告されるエラーの数、またはそれらの任意の組み合わせを含計算するステップと、
    前記プロセッサが、前記分散アプリケーションの障害状態を検出するステップと、
    前記プロセッサが、前記少なくとも1つのメトリックに基づいて、前記障害状態の潜在的な原因として前記特定のコンポーネントを識別するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  12. 第1のテクノロジーに関連する第1のテクノロジー固有のインターセプターおよび前記第1のテクノロジーとは異なる第2のテクノロジーに関連する第2のテクノロジー固有のインターセプターを含む複数のテクノロジー固有のインターセプターと、テクノロジーに依存しない、コンピュータ装置上のインターセプターマネージャーとを備える監視システムであって、
    前記第1のテクノロジー固有のインターセプターは、
    第1の分散アプリケーションコンポーネントによって送信および受信されるメッセージを傍受して、前記第1のテクノロジーに関連する前記第1の分散アプリケーションコンポーネントの動作を追跡し、
    前記傍受したメッセージを検出したことに応答して、前記第1の分散アプリケーションコンポーネントの前記追跡された動作に基づいてワークアイテムを生成し、
    前記第1の分散アプリケーションコンポーネントの前記追跡された動作に基づいて、前記ワークアイテムを前記テクノロジーに依存しないインターセプターマネージャーに送信するように構成され、
    前記第2のテクノロジー固有のインターセプターは、
    第2の分散アプリケーションコンポーネントによって送信および受信されたメッセージを傍受して、前記第2のテクノロジーに関連する前記第2の分散アプリケーションコンポーネントの動作を追跡し、
    前記第2の分散アプリケーションコンポーネントの前記追跡された動作に基づいてワークアイテムを生成し、
    前記第2の分散アプリケーションコンポーネントの前記追跡された動作に基づいて、前記ワークアイテムを前記テクノロジーに依存しないインターセプターマネージャーに送信するように構成され、
    前記テクノロジーに依存しないインターセプターマネージャーは、前記第1のテクノロジー固有のインターセプターに関連する第1のワークアイテムマネージャーおよび前記第2のテクノロジー固有のインターセプターに関連する第2のワークアイテムマネージャーといった、複数のワークアイテムマネージャーを含み、
    各ワークアイテムマネージャーは、特定のテクノロジー固有のインターセプターに関連し、
    前記特定のテクノロジー固有のインターセプターからワークアイテムを受信し、
    前記受信したワークアイテムをワークアイテムキューに入れ、
    前記特定のテクノロジー固有のインターセプターによって追跡された分散アプリケーションコンポーネントのパフォーマンスに対する特定のワークアイテムによる影響を、受け入れ可能なパフォーマンスへの影響のしきい値と比較し、
    前記影響が前記受け入れ可能なパフォーマンスへの影響のしきい値未満のときに、前記特定のワークアイテムの実行をスケジューリングし、
    前記影響が前記受け入れ可能なパフォーマンスへの影響のしきい値より大きいときに、前記特定のワークアイテムの実行をスケジューリングせずに、前記特定のワークアイテムを破棄するように構成されていること
    を特徴とする監視システム。
  13. テクノロジー固有のインターセプターはそれぞれ、その関連するワークアイテムマネージャーに空のワークアイテムを要求し、前記空のワークアイテムに情報を格納することによってワークアイテムを生成し、および前記生成されたワークアイテムを前記テクノロジーに依存しないインターセプターマネージャーに送信するようにさらに構成されていることを特徴とする請求項12に記載の監視システム。
  14. 前記各ワークアイテムマネージャーは、
    同時に実行するワークアイテムの数を制限し、
    前記ワークアイテムキューのサイズを制限し、
    前記ワークアイテムキューが満杯のときに、受信したワークアイテムを拒否し、
    スレッドプールのフォアグラウンドのスレッドまたは前記スレッドプールのバックグラウンドのスレッドにおいて、特定のワークアイテムの実行をスケジューリングし、
    前記スレッドプールの同時に実行するスレッドの数を制限する
    ようにさらに構成されていることを特徴とする請求項12に記載の監視システム。
  15. 前記プロセッサが、空のワークアイテムに対する要求を、前記テクノロジー固有のインターセプターから受信するステップと、
    前記プロセッサが、前記空のワークアイテムに対する要求を拒否するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  16. 前記プロセッサが、前記テクノロジー固有のインターセプターで依存関係検出をオンまたはオフするステップをさらに含むことを特徴とする請求項1に記載の方法。
  17. 前記特定の傍受したメッセージは、前記特定のコンポーネントのソース操作と、前記複数のコンポーネントの第2のコンポーネントのターゲット操作との間の依存関係を示し、前記少なくとも1つの潜在的なワークアイテムは、前記依存関係を記憶するためのワークアイテムを含むことを特徴とする請求項1に記載の方法。
  18. 前記特定の傍受したメッセージは、分散アプリケーションの実行パスに関連するアクティブ情報を示し、前記少なくとも1つの潜在的なワークアイテムは、前記アクティブ情報を記憶するためのワークアイテムを含むことを特徴とする請求項1に記載の方法。
  19. 前記特定の傍受したメッセージは、ソフトウェア例外の発生を示し、前記少なくとも1つの潜在的なワークアイテムは、前記ソフトウェア例外の発生を報告するためのワークアイテムを含むことを特徴とする請求項1に記載の方法。
JP2012502129A 2009-03-24 2010-03-19 分散アプリケーションの監視 Expired - Fee Related JP5474177B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/409,547 US8893156B2 (en) 2009-03-24 2009-03-24 Monitoring of distributed applications
US12/409,547 2009-03-24
PCT/US2010/028024 WO2010111145A2 (en) 2009-03-24 2010-03-19 Monitoring of distributed applications

Publications (3)

Publication Number Publication Date
JP2012521607A JP2012521607A (ja) 2012-09-13
JP2012521607A5 JP2012521607A5 (ja) 2013-05-02
JP5474177B2 true JP5474177B2 (ja) 2014-04-16

Family

ID=42781786

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012502129A Expired - Fee Related JP5474177B2 (ja) 2009-03-24 2010-03-19 分散アプリケーションの監視

Country Status (7)

Country Link
US (1) US8893156B2 (ja)
EP (1) EP2411927B1 (ja)
JP (1) JP5474177B2 (ja)
KR (1) KR101683321B1 (ja)
CN (1) CN102369523B (ja)
CA (1) CA2753019C (ja)
WO (1) WO2010111145A2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601443B2 (en) * 2008-02-12 2013-12-03 International Business Machines Corporation Method and system for correlating trace data
US20110252423A1 (en) 2010-04-07 2011-10-13 Apple Inc. Opportunistic Multitasking
US9697009B2 (en) * 2010-06-25 2017-07-04 AVG Netherlands B.V. Method for improving the performance of computers
WO2012038949A1 (en) * 2010-08-09 2012-03-29 Neebula Systems Ltd. System and method for storing a skeleton representation of an application in a computerized organization
US9122803B1 (en) * 2010-10-26 2015-09-01 Interactive TKO, Inc. Collaborative software defect detection
US9292329B2 (en) 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
US9544353B2 (en) * 2011-06-16 2017-01-10 Microsoft Technology Licensing, Llc Dynamic activation of web applications
US9027141B2 (en) * 2012-04-12 2015-05-05 Netflix, Inc. Method and system for improving security and reliability in a networked application environment
US9405602B1 (en) * 2012-06-25 2016-08-02 Google Inc. Method for application notification and tasking
CN103823659A (zh) * 2012-11-19 2014-05-28 苏州博远容天信息科技有限公司 一种通讯多线程技术
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
KR102083316B1 (ko) * 2013-04-24 2020-04-14 삼성전자주식회사 사용자 디바이스의 메모리 관리 방법 및 장치
US9336068B2 (en) 2013-06-07 2016-05-10 Apple Inc. Throttling of application access to resources
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US9405603B2 (en) * 2014-04-18 2016-08-02 AppDynamics, Inc. Naming of nodes in net framework
US9998348B2 (en) * 2014-07-31 2018-06-12 Cisco Technology, Inc. Monitoring a business transaction utilizing PHP engines
CN106326099B (zh) * 2015-07-01 2019-10-29 阿里巴巴集团控股有限公司 一种用于程序跟踪的方法、装置及电子设备
US20170289242A1 (en) * 2016-03-31 2017-10-05 David Keppel Technologies for dynamic work queue management
US10365909B2 (en) * 2016-04-21 2019-07-30 Data Accelerator Ltd. Method and system for deploying virtualized applications
WO2017189006A1 (en) * 2016-04-29 2017-11-02 Appdynamics Llc Predictive rollup and caching for application performance data
US10210020B2 (en) * 2016-06-29 2019-02-19 International Business Machines Corporation Scheduling requests in an execution environment
CN107291601B (zh) * 2017-06-12 2021-01-22 北京奇艺世纪科技有限公司 一种安全运维方法及系统
US10416974B2 (en) * 2017-10-06 2019-09-17 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
US10841236B1 (en) * 2018-03-30 2020-11-17 Electronic Arts Inc. Distributed computer task management of interrelated network computing tasks
US11321135B2 (en) * 2019-10-31 2022-05-03 Oracle International Corporation Rate limiting compliance assessments with multi-layer fair share scheduling
US11194660B1 (en) 2020-05-28 2021-12-07 International Business Machines Corporation Listing and protocol for namespace index
US11500700B2 (en) 2020-05-28 2022-11-15 International Business Machines Corporation Leasing prioritized items in namespace indices
US11188419B1 (en) 2020-05-28 2021-11-30 International Business Machines Corporation Namespace indices in dispersed storage networks
US11243695B2 (en) 2020-05-28 2022-02-08 International Business Machines Corporation Leasing unordered items in namespace indices
DE102020209512A1 (de) 2020-07-28 2022-02-03 Volkswagen Aktiengesellschaft Verfahren und Vorrichtung zum Bestimmen eines Betriebszustands mindestens einer Anwendung
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
US11886920B2 (en) * 2021-03-19 2024-01-30 Shopify Inc. Methods and apparatus for load sharing between primary and secondary computing environments based on expected completion latency differences
CN114745153B (zh) * 2022-03-10 2024-02-27 北京汇元网科技股份有限公司 WCF和log4net结合的链路跟踪方法

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694396A (en) * 1985-05-06 1987-09-15 Computer X, Inc. Method of inter-process communication in a distributed data processing system
US5938749A (en) * 1996-06-03 1999-08-17 Whittaker Communications Inc. Queue measurement apparatus and methodology
US5832515A (en) * 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US5958010A (en) * 1997-03-20 1999-09-28 Firstsense Software, Inc. Systems and methods for monitoring distributed applications including an interface running in an operating system kernel
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6279001B1 (en) 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6182136B1 (en) * 1998-09-08 2001-01-30 Hewlett-Packard Company Automated service elements discovery using core service specific discovery templates
US6611955B1 (en) 1999-06-03 2003-08-26 Swisscom Ag Monitoring and testing middleware based application software
US6748555B1 (en) 1999-09-09 2004-06-08 Microsoft Corporation Object-based software management
US6604125B1 (en) * 1999-09-24 2003-08-05 Sun Microsystems, Inc. Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment
US6457142B1 (en) * 1999-10-29 2002-09-24 Lucent Technologies Inc. Method and apparatus for target application program supervision
US6460055B1 (en) * 1999-12-16 2002-10-01 Livevault Corporation Systems and methods for backing up data files
US6792456B1 (en) 2000-05-08 2004-09-14 International Business Machines Corporation Systems and methods for authoring and executing operational policies that use event rates
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US20020184363A1 (en) * 2001-04-20 2002-12-05 Steven Viavant Techniques for server-controlled measurement of client-side performance
JP2002351852A (ja) * 2001-05-28 2002-12-06 Mitsubishi Electric Corp システム運用管理方式
US7584418B2 (en) 2001-05-31 2009-09-01 Oracle International Corporation Methods, systems, and articles of manufacture for prefabricating an information page
US7155728B1 (en) * 2001-06-28 2006-12-26 Microsoft Corporation Remoting features
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US6847854B2 (en) * 2001-08-10 2005-01-25 Rockwell Automation Technologies, Inc. System and method for dynamic multi-objective optimization of machine selection, integration and utilization
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US6910092B2 (en) * 2001-12-10 2005-06-21 International Business Machines Corporation Chip to chip interface for interconnecting chips
GB2383437B (en) * 2001-12-20 2004-02-04 Sun Microsystems Inc System trace unit
JP2005523518A (ja) * 2002-04-19 2005-08-04 コンピュータ アソシエイツ シンク,インコーポレイテッド コンピュータアプリケーションをモニタするシステム及び方法
EP1527395A4 (en) * 2002-06-25 2006-03-01 Ibm METHOD AND SYSTEM FOR CONTROLLING THE PERFORMANCE OF AN APPLICATION IN A DISTRIBUTED ENVIRONMENT
US7228354B2 (en) * 2002-06-28 2007-06-05 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7418494B2 (en) * 2002-07-25 2008-08-26 Intellectual Ventures Holding 40 Llc Method and system for background replication of data objects
US20040025162A1 (en) * 2002-07-31 2004-02-05 Fisk David C. Data storage management system and method
US7240325B2 (en) 2002-09-11 2007-07-03 International Business Machines Corporation Methods and apparatus for topology discovery and representation of distributed applications and services
US7448066B2 (en) 2002-09-19 2008-11-04 International Business Machines Corporation Application server object-level security for distributed computing domains
US7194664B1 (en) 2003-09-08 2007-03-20 Poon Fung Method for tracing application execution path in a distributed data processing system
US7409676B2 (en) * 2003-10-20 2008-08-05 International Business Machines Corporation Systems, methods and computer programs for determining dependencies between logical components in a data processing system or network
JP4330429B2 (ja) * 2003-11-05 2009-09-16 株式会社日立製作所 プロファイル情報の取得装置及び方法
US20050267954A1 (en) * 2004-04-27 2005-12-01 Microsoft Corporation System and methods for providing network quarantine
US7805509B2 (en) * 2004-06-04 2010-09-28 Optier Ltd. System and method for performance management in a multi-tier computing environment
US20060004767A1 (en) 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting, representing, transmitting, and interpreting usage and state data for software
US20060085420A1 (en) * 2004-09-27 2006-04-20 Symphoniq Corp. Method and apparatus for monitoring real users experience with a website
US7624176B2 (en) * 2004-10-14 2009-11-24 International Business Machines Corporation Method and system for programmatically generating synthetic transactions to monitor performance and availability of a web application
US7552212B2 (en) * 2004-10-22 2009-06-23 International Business Machines Corporation Intelligent performance monitoring based on user transactions
JP3945521B2 (ja) * 2005-06-13 2007-07-18 株式会社日立製作所 分散処理システム及びその性能モニタリング方法
US7734768B2 (en) * 2005-07-26 2010-06-08 International Business Machines Corporation System and method for adaptively collecting performance and event information
US7891000B1 (en) * 2005-08-05 2011-02-15 Cisco Technology, Inc. Methods and apparatus for monitoring and reporting network activity of applications on a group of host computers
US8079037B2 (en) * 2005-10-11 2011-12-13 Knoa Software, Inc. Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications
US7499951B2 (en) 2005-11-18 2009-03-03 Oracle International Corporation Capturing data from user selected portions of a business process and transferring captured data to user identified destinations
US7672983B2 (en) * 2005-12-19 2010-03-02 Sun Microsystems, Inc. Method and apparatus for tracking activity of a garbage collector with a plurality of threads that operate concurrently with an application program
WO2007099276A1 (en) 2006-03-02 2007-09-07 British Telecommunications Public Limited Company Message processing methods and systems
US20080005520A1 (en) * 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US20080016115A1 (en) 2006-07-17 2008-01-17 Microsoft Corporation Managing Networks Using Dependency Analysis
US8234631B2 (en) * 2007-08-14 2012-07-31 Dynatrace Software Gmbh Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications
US20080148242A1 (en) 2006-12-18 2008-06-19 Computer Associates Think, Inc. Optimizing an interaction model for an application
US8644305B2 (en) * 2007-01-22 2014-02-04 Synopsys Inc. Method and system for modeling a bus for a system design incorporating one or more programmable processors
CN101242392B (zh) * 2007-02-06 2012-02-08 国际商业机器公司 用于系列服务消息处理的方法、设备和系统
EP1975830A1 (en) 2007-03-30 2008-10-01 British Telecommunications Public Limited Company Distributed computer system
US9645845B2 (en) * 2007-09-27 2017-05-09 Sap Se Triggering job execution in application servers based on asynchronous messages sent by scheduling tasks

Also Published As

Publication number Publication date
CN102369523B (zh) 2015-09-09
CA2753019C (en) 2016-12-20
CN102369523A (zh) 2012-03-07
JP2012521607A (ja) 2012-09-13
WO2010111145A2 (en) 2010-09-30
US20100251263A1 (en) 2010-09-30
CA2753019A1 (en) 2010-09-30
KR20110129926A (ko) 2011-12-02
EP2411927A4 (en) 2012-10-17
EP2411927A2 (en) 2012-02-01
KR101683321B1 (ko) 2016-12-06
WO2010111145A3 (en) 2011-01-13
EP2411927B1 (en) 2018-08-01
US8893156B2 (en) 2014-11-18

Similar Documents

Publication Publication Date Title
JP5474177B2 (ja) 分散アプリケーションの監視
US9584617B2 (en) Allocating cache request in distributed cache system based upon cache object and marker identifying mission critical data
CN111913818B (zh) 一种确定服务间依赖关系的方法及相关装置
US7698251B2 (en) Fault tolerant facility for the aggregation of data from multiple processing units
US7474991B2 (en) Method and apparatus for analyzing idle states in a data processing system
US7702783B2 (en) Intelligent performance monitoring of a clustered environment
US20060167891A1 (en) Method and apparatus for redirecting transactions based on transaction response time policy in a distributed environment
US7689688B2 (en) Multiple-application transaction monitoring facility for debugging and performance tuning
US8909761B2 (en) Methods and computer program products for monitoring and reporting performance of network applications executing in operating-system-level virtualization containers
US20100043004A1 (en) Method and system for computer system diagnostic scheduling using service level objectives
CN106487574A (zh) 自动化运行维护监测系统
US9027025B2 (en) Real-time database exception monitoring tool using instance eviction data
US20120072575A1 (en) Methods and computer program products for aggregating network application performance metrics by process pool
CN108509313A (zh) 一种业务监控方法、平台及存储介质
US9600523B2 (en) Efficient data collection mechanism in middleware runtime environment
US9176783B2 (en) Idle transitions sampling with execution context
US8954563B2 (en) Event enrichment using data correlation
US20080216057A1 (en) Recording medium storing monitoring program, monitoring method, and monitoring system
KR20170122874A (ko) 데이터 분산 서비스 기반의 응용 시스템의 통합 로그 관리 장치
KR20030041612A (ko) 서버 병목을 실시간으로 분석하는 방법
US10862991B2 (en) System and method for conditional call path monitoring in a distributed transactional middleware environment
US9235457B2 (en) Proactively communicating information between processes through a message repository
CN112711487A (zh) 数据源管控方法、装置、管控服务器及存储介质
CN115129536A (zh) 动态监测

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130312

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130312

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R150 Certificate of patent or registration of utility model

Ref document number: 5474177

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees