CN102369523A - 对分布式应用程序的监测 - Google Patents

对分布式应用程序的监测 Download PDF

Info

Publication number
CN102369523A
CN102369523A CN2010800140223A CN201080014022A CN102369523A CN 102369523 A CN102369523 A CN 102369523A CN 2010800140223 A CN2010800140223 A CN 2010800140223A CN 201080014022 A CN201080014022 A CN 201080014022A CN 102369523 A CN102369523 A CN 102369523A
Authority
CN
China
Prior art keywords
work item
blocker
technology
application program
distributed application
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.)
Granted
Application number
CN2010800140223A
Other languages
English (en)
Other versions
CN102369523B (zh
Inventor
A·A·科埃略
A·J·萨格维
D·M·玛哈简
R·苏达卡尔
A·K·加内桑
V·S·K·库拉帕蒂
I·G·莱特卡
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 Technology Licensing LLC
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 CN102369523A publication Critical patent/CN102369523A/zh
Application granted granted Critical
Publication of CN102369523B publication Critical patent/CN102369523B/zh
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)

Abstract

公开了用于监测分布式应用程序的方法、系统,以及计算机可读介质。一种特定方法标识分布式应用程序的多个组件。该方法还标识与特定组件相关联的特定技术并基于所标识的特定技术来将技术专用的拦截器附加到特定组件。该方法包括使用技术专用的拦截器来拦截由特定组件所发送的或接收到的消息。基于所拦截的消息,生成至少一个潜在的工作项。该方法包括基于所预测的至少一个潜在的工作项对分布式应用程序的性能的影响,来确定是否要调度该至少一个潜在工作项以便执行。

Description

对分布式应用程序的监测
背景
当软件应用程序跨各种物理组件分布时会难以监测它们。此外,各个组件可能不可被操作,不同的组件可以处于不同的企业操作团队的管辖下。应用程序也可以包括多种技术。虽然分布式应用程序可以是异质的,但是,对于分布式应用程序的监测系统常常是技术专用的(例如,某一系统可以监测Java应用程序组件,但不可监测.NET应用程序组件)。另外,监测系统可能对正在被监测的分布式应用程序的性能产生负面影响。即,为了监测分布式应用程序上的每一事务,监测系统可能会引入重大的处理和存储器开销,干扰操作或显著地影响分布式应用程序的性能。这样的性能影响在实时、几乎实时、或任务关键的分布式应用程序中可能是有问题的。
发明内容
本公开描述了对于分布式应用程序的监测系统。对各种硬件和软件分布式应用程序组件(如数据库、服务器以及web服务)进行监视得到支持。对诸如.NET、Java、Windows通信基础(WCF)、因特网信息服务(IIS)、基于Windows的技术、以及基于UNIX的技术之类的多种技术进行监视也得到支持。
监测系统包括技术不可知的拦截器管理器以及能够拦截由分布式应用程序的组件所发送的和接收到的消息的一个或多个技术专用的拦截器。技术专用的拦截器中的每一个都是特定技术所专用的,并被附加到与特定技术相关联的分布式应用程序组件(例如,.NET拦截器被附加到包括.NET应用程序或服务的分布式应用程序组件)。技术专用的拦截器可以被配置成跟踪对特定函数的调用,沿着分布式应用程序的特定执行路径跟踪活动,或跟踪分布式应用程序中发生的事件(例如,软件异常或报告的错误)。技术专用的拦截器基于拦截的消息来生成工作项,并将工作项发送到技术不可知的拦截器管理器。
技术不可知的拦截器管理器可以调度接收到的工作项供执行。例如,技术不可知的拦截器管理器可以将分布式应用程序的已发现的依赖关系存储在存储位置,将活动信息存储在该存储位置,并将事件的发生报告给诸如IT管理员或管理应用程序之类的客户端。技术不可知的拦截器管理器也可以包括节制功能,如工作项排队、依赖关系缓存、后台线程化以及垃圾回收,以减轻监测系统的性能影响。
提供本发明内容是为了以精简的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
图1是监测分布式应用程序的系统的特定实施例的框图;
图2是监测分布式应用程序的系统的另一特定实施例的框图;
图3是可以和监测分布式应用程序的系统一起使用的身份监测器的特定实施例的框图;
图4是示出了监测分布式应用程序的消息拦截的框图;
图5是监测分布式应用程序的方法的特定实施例的流程图;
图6是监测分布式应用程序的方法的另一特定实施例的流程图;
图7是监测分布式应用程序的方法的特定实施例的流程图;
图8是监测分布式应用程序的方法的另一特定实施例的流程图;
图9是监测分布式应用程序的方法的另一特定实施例的流程图;
图10是在技术不可知的拦截器管理器上有选择地调度工作项的方法的特定实施例的流程图;
图11是示出了分布式计算环境的特定实施例的一般示意图;以及
图12是一种计算环境的框图,包括可以支持如图1-11所示的计算机实现的方法、计算机程序产品以及系统组件的实施例的计算设备。
具体实施方式
在一特定实施例中,公开了包括标识分布式应用程序的多个组件以及标识与多个组件中的特定组件相关联的特定技术的方法。该方法还包括基于所标识的特定技术来将技术专用的拦截器附加到该特定组件,使用附加的技术专用的拦截器来拦截由该特定组件所发送的或接收到的消息。该方法还包括基于拦截的消息,生成至少一个潜在的工作项,并基于该至少一个潜在的工作项对分布式应用程序的性能的预测影响,来确定是否要调度该至少一个潜在工作项以便执行。在一特定实施例中,该至少一个潜在工作项是响应于确定特定指令或指令集要求处理而生成的可执行的工作项。
在另一特定实施例中,公开了包括多个技术专用的拦截器的系统,包括第一技术专用的拦截器和第二技术专用的拦截器以及技术不可知的拦截器管理器。第一技术专用的拦截器与第一技术相关联,第二技术专用的拦截器与不同于第一技术的第二技术相关联。第一技术专用的拦截器被配置成跟踪与第一技术相关联的第一分布式应用程序组件的操作,包括拦截由第一分布式应用程序组件所发送的消息以及接收到的消息。第一技术专用的拦截器还被配置成基于所跟踪的第一分布式应用程序组件的操作来生成工作项,并将工作项发送到技术不可知的拦截器管理器。第二技术专用的拦截器被配置成跟踪与第二技术相关联的第二分布式应用程序组件的操作,包括拦截由第二分布式应用程序组件所发送的消息以及接收到的消息。第二技术专用的拦截器还被配置成基于所跟踪的第二分布式应用程序组件的操作来生成工作项,并将工作项发送到技术不可知的拦截器管理器。技术不可知的拦截器管理器包括多个工作项管理器,包括与第一技术专用的拦截器相关联的第一工作项管理器,以及与第二技术专用的拦截器相关联的第二工作项管理器。每一工作项管理器都与特定技术专用的拦截器相关联,并被配置成从特定技术专用的拦截器接收工作项并将接收到的工作项排队在工作项队列中。每一工作项管理器还被配置成将由特定技术专用的拦截器跟踪的特定工作项对分布式应用程序组件的性能的影响与可以接受的性能影响阈值进行比较。每一工作项管理器还被配置成当影响小于可以接受的性能影响阈值时,调度特定工作项以便执行,而当影响大于可以接受的性能影响阈值时,丢弃特定工作项,而不调度特定工作项来执行。
在另一特定实施例中,公开了计算机可读介质。该计算机可读介质包括当由计算机执行时导致计算机在技术不可知的拦截器管理器上从被附加到分布式应用程序的第一组件的第一技术专用的拦截器接收第一工作项的指令。第一技术专用的拦截器是第一技术专用的,并且,第一组件与第一技术相关联。该计算机可读介质还包括当由计算机执行时导致计算机在技术不可知的拦截器管理器上从被附加到分布式应用程序的第二组件的第二技术专用的拦截器接收第二工作项的指令。第二技术专用的拦截器是第二技术专用的。第二组件与第二技术相关联,并且,第二技术不同于第一技术。该计算机可读介质还包括当由计算机执行时导致计算机基于第一工作项对分布式应用程序的第一影响并基于第二工作项对分布式应用程序的第二影响,来确定是否要调度第一工作项和第二工作项以便执行的指令。
图1是监测分布式应用程序102的系统100的特定实施例的框图。分布式应用程序102包括诸如第一计算设备104上的Windows通信基础(WCF)组件110和第二计算设备106上的.NET组件120之类的组件。第一计算设备104和第二计算设备106是分布式的(例如,使用单独的硬件操作或彼此相距较远)。分布式应用程序102还包括附加到组件的技术专用的拦截器,如附加到WCF组件110的WCF拦截器112和附加到.NET组件120的.NET拦截器122。分布式应用程序102的组件能够发送和接收消息,而附加到组件的技术专用的拦截器能够拦截消息。技术专用的拦截器也可以能够基于拦截的消息生成工作项,并将所生成的工作项发送到技术不可知的拦截器管理器130。
分布式应用程序102的每一组件都可以被配置成将消息发送到分布式应用程序102的其他组件,并从分布式应用程序102的其他组件接收消息。例如,WCF组件110和.NET组件120可以被配置成向彼此发送消息并从彼此接收消息。在一特定实施例中,消息是可扩展标记语言(XML)消息。
每一技术专用的拦截器都可以被配置成跟踪对技术专用的拦截器被附加到的组件上的特定函数的调用。例如,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可以跟踪一分钟内在WCF组件110上发生的软件异常的数量,以便计算WCF组件110上的每分钟异常率。可另选地,可以连续地跟踪特定事件。例如,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可以生成包括所有三个任务的指令的单一工作项。
应该注意,多个拦截器也可以被附加到单个组件。例如,当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工作项管理器142可以将工作项存储在WCF工作项队列142中,而.NET工作项管理器可以将工作项存储在.NET工作项队列152中。在一特定实施例中,工作项按照工作项由技术不可知的拦截器管理器130接收的顺序被存储在工作项队列中。例如,当从WCF拦截器112接收到的第一工作项在从WCF拦截器接收到的第二工作项之前被技术不可知的拦截器管理器130接收到时,第一工作项可以被存储在WCF工作项队列142中,排在第二工作项之前。工作项管理器中的每一个还被配置成当工作项队列已满时丢弃接收到的工作项。例如,当WCF工作项管理器140确定WCF工作项队列142已满时(例如,当WCF工作项队列142的大小等于WCF工作项管理器140已知的最大工作项队列大小变量时),WCF工作项管理器140可以丢弃接收到的工作项。
工作项管理器中的每一个都可包括被配置成调度排队的工作项以便执行的工作项调度逻辑。例如,WCF工作项管理器140可包括WCF工作项调度逻辑144,而.NET工作项管理器150可包括.NET工作项调度逻辑154。在一特定实施例中,WCF工作项调度逻辑144或.NET工作项调度逻辑154可以基于所预测的特定工作项对分布式应用程序102的性能的影响来确定是否要调度该特定工作项以便执行。例如,当所预测的特定工作项的影响低于可以接受的性能影响阈值时(例如,1%的可以接受的处理器使用率影响、1秒的可以接受的消息延迟影响、或三个可执行操作的可以接受的执行队列长度影响),WCF工作项调度逻辑144可以调度特定工作项以便执行。或者,WCF工作项调度逻辑144可以基于所预测的特定工作项对WCF组件110的影响来确定是否要调度特定工作项以便执行。
在一特定实施例中,技术专用的拦截器被配置成向工作项管理器请求空工作项,通过将信息和执行指令存储在空工作项中来生成工作项。可以理解,在这样的实施例中,工作项管理器可以通过拒绝对空工作项的请求来降低在特定分布式应用程序组件上监测的性能影响。例如,在发现.NET组件120的依赖关系时,.NET拦截器122可以向.NET工作项管理器150请求空工作项。如果.NET工作项管理器150允许请求并将空工作项发送到.NET拦截器122,则.NET拦截器122可以通过将发现的依赖关系存储在空工作项中来生成工作项,并将所生成的工作项发送到.NET工作项管理器150。在一特定实施例中,工作项具有有效期,如果在有效期内它们没有被调度来执行,则将它们从工作项队列中丢弃。例如,如果由.NET拦截器122所生成的工作项没有在由.NET工作项管理器150生成的10秒的空工作项内被调度,则可以它将过期并可以被丢弃。
在一特定实施例中,诸如工作项管理器140和工作项管理器150之类的工作项管理器可以根据下列示例性C#类模板和接口来实现:
Figure BPA00001443803900071
在操作中,技术专用的拦截器可以被附加到分布式应用程序102的组件。例如,WCF拦截器112可以被附加到WCF组件110,而.NET拦截器122可以被附加到.NET组件120。每一技术专用的拦截器可以被配置成在分布式应用程序102中跟踪函数调用、跟踪活动信息、跟踪性能事件或其任何组合。例如,WCF拦截器112可以被配置成跟踪对WCF组件110上的特定WCF函数的调用,跟踪分布式应用程序102的包括WCF组件110的特定执行路径上的活动信息,以及跟踪在WCF组件110上发生的软件异常。类似地,.NET拦截器122可以被配置成跟踪对.NET组件120上的特定.NET函数的调用,跟踪涉及分布式应用程序102的包括.NET组件120的特定执行路径的活动信息,以及跟踪在.NET组件120上发生的软件异常。
在操作过程中,技术专用的拦截器可以拦截分布式应用程序102的各种组件之间的一个或多个消息,并可以基于一个或多个拦截的消息来生成工作项。技术专用的拦截器也可以将所生成的工作项发送到技术不可知的拦截器管理器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中的每一个潜在的工作项,WCF工作项调度逻辑144可以基于所预测的潜在工作项对分布式应用程序102的性能的影响来确定是否要调度潜在工作项以便执行。当所预测的潜在工作项的影响低于可以接受的性能影响阈值时,WCF工作项调度逻辑144可以调度潜在工作项以便执行。例如,当所预测的潜在工作项对分布式应用程序102上的消息延迟的影响小于1秒时,可以调度潜在工作项。当特定工作项的潜在影响高于可以接受的性能影响阈值时,WCF工作项调度逻辑144可以从WCF工作项队列142中丢弃潜在工作项。例如,当所预测的潜在工作项对分布式应用程序102上的消息延迟的影响超过1秒时,可以丢弃潜在工作项。类似地,对于.NET工作项队列152中的每一个潜在工作项,.NET工作项调度逻辑可以基于所预测的潜在工作项对分布式应用程序102的性能的影响,来可选择性地调度潜在工作项。
可以理解,可以使用图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也可以包括工作项调度逻辑244,其被配置成调度工作项队列242中的工作项一般执行,并且一旦工作项被调度以便执行就从工作项队列242中删除工作项。在一特定实施例中,工作项调度逻辑244可以基于所预测的特定工作项对分布式应用程序201的性能的影响来确定是否要调度特定工作项以便执行。例如,当所预测的特定工作项的影响低于可以接受的性能影响阈值时,工作项调度逻辑244可以调度特定工作项以便执行。
工作项调度逻辑244可以访问线程池220,其中,线程池220包括一个或多个前台线程222和一个或多个后台线程224。当工作项调度逻辑244可以访问线程池220时,工作项调度逻辑244可以调度工作项以便在线程池220的前台线程222中的一个或后台线程224中的一个中执行。工作项调度逻辑244也可以被配置成限制同时执行的工作项的数量,并限制线程池220的同时执行的线程的数量。
技术不可知的拦截器管理器230上的依赖关系管理器272可以被配置成执行包括存储已发现的依赖关系的指令的工作项。在一特定实施例中,依赖关系管理器272将已发现的依赖关系暂时地收集在依赖关系缓存282中,并成批地存储收集的依赖关系。例如,依赖关系管理器272可以将已发现的依赖关系收集在依赖关系缓存282中,每当依赖关系缓存282的大小到达固定的批量大小(例如,20)时,存储来自依赖关系缓存282的收集的已发现的依赖关系。可另选地,依赖关系管理器272可以将已发现的依赖关系收集在依赖关系缓存282中,并在固定时间间隔(例如,120秒)存储来自依赖关系缓存282的收集的已发现的依赖关系。如果由依赖关系缓存282收集的依赖关系在有效期内没有被存储,则它们会过期。依赖关系管理器272可以通过将一批已发现的依赖关系发送到负责将项存储在一个或多个存储位置的存储服务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数据库连接(JDBC)与数据库连接时,活动管理器270可以通过指示Java拦截器204跟踪Java组件207上的包括JDBC调用的所有消息来跟踪数据库操作。
应该注意,虽然图2中所示出的特定实施例只示出了一个存储服务(即,存储服务290),可由技术不可知的拦截器管理器230访问多个存储服务。例如,依赖关系管理器272可以使用第一存储服务来存储已发现的依赖关系,而活动管理器270可以使用第二存储服务来存储活动信息。第一存储服务和第二存储服务可以将数据存储到相同的存储位置或不同的存储位置。
技术不可知的拦截器管理器230上的身份监测器260可包括对于分布式应用程序201的每一个组件的身份监测器。例如,身份监测器260可包括对于分布式应用程序201的web服务的端点监测器。在一特定实施例中,对于特定组件的身份监测器存储涉及由附加到特定组件的技术专用的拦截器检测到的事件(例如,软件异常或错误)的数据。每一个身份监测器都可以具有一个或多个客户端,而每一个身份监测器都可以执行包括通过将特定事件的发生报告到一个或多个客户端来报告特定事件的发生的指令的工作项。例如,当.NET拦截器202生成包括报告.NET组件205上的错误的指令的工作项,对于.NET组件205的身份监测器可以通过向.NET组件205的身份监测器的客户端报告错误来执行工作项。每一个身份监测器都可以将事件数据存储在监测树中,该监测树包括分配的监测器,如组件监测器、端点监测器、活动监测器、业务角度监测器、操作调用监测器、仪器监测器或其任何组合。此处参考图3进一步描述了监测树。技术不可知的拦截器管理器230也可以包括垃圾回收器284。垃圾回收器284可以被配置成以固定时间间隔运行,并解除分配在固定时间间隔内没有被使用的监测器。
在一特定实施例中,技术不可知的拦截器管理器230包括一个或多个配置设置212。可以通过配置文件210来设置配置设置212。配置文件210可以被以任何格式(例如,XML)存储,并可包括对于依赖关系管理器272、活动管理器270、工作项管理器240以及垃圾回收器284的设置。例如,配置文件210可以按照XML存储,并包括下列示例性XML片段:
Figure BPA00001443803900121
在一特定实施例中,可以根据下列示例性C#接口来实现技术专用的拦截器:
Figure BPA00001443803900122
Figure BPA00001443803900131
Figure BPA00001443803900141
可以理解,当如上文那样实现技术特定拦截器时,可以通过调用方法ProcessDependencyDiscovery()(进程依赖关系发现)来打开或关闭技术专用的拦截器上的依赖关系发现,并通过方法ProcessActivityMonitoring()(进程活动检测)来打开或关闭活动监测。此外,还可以通过方法SetupInstrument()(设置工具)来设置事件跟踪,可以通过方法SetupOperationCallInstrument()(设置操作调用工具)来设置函数调用跟踪,并可以通过方法SetupActivityInstrument()(设置活动工具)来设置活动跟踪。
在一特定实施例中,技术不可知的拦截器管理器230可以位于分布式应用程序201外部的代理208中。在这样的实施例中,分布式应用程序上的诸如技术专用的拦截器202-204之类的技术专用的拦截器可以被配置成通过外部代理208来跟踪函数调用、跟踪活动信息以及跟踪事件。
在操作中,可以通过配置文件210来配置技术不可知的拦截器管理器230。技术不可知的拦截器管理器230可以标识分布式应用程序201的组件,如.NET组件205、WCF组件206以及Java组件207。技术不可知的拦截器管理器230还可以标识与组件中的一个或多个相关联的特定技术,并将技术专用的拦截器附加到一个或多个组件。例如,技术不可知的拦截器管理器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组件204以跟踪Java组件207和数据库之间的JDBC调用。作为再一个示例,技术不可知的拦截器管理器230可以配置WCF拦截器203,以报告WCF组件206上的软件异常的每一次发生。
技术专用的拦截器可以拦截分布式应用程序201的各种组件之间的一个或多个消息,并可以基于一个或多个拦截的消息来生成一个或多个工作项。例如,.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的性能的影响来确定是否要调度依赖关系工作项以便执行。当所预测的依赖关系工作项的影响低于可以接受的性能影响阈值时,工作项调度逻辑224可以调度依赖关系工作项供在线程池220的前台线程222或后台线程224中的一个中执行。依赖关系管理器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或后台线程224中的一个中执行。活动管理器270可以通过将由Java组件207作出的JDBC调用添加到活动队列280中来执行活动工作项。在将JDBC调用添加到活动队列280中之后,活动管理器270可以通过存储服务290来存储JDBC调用。可另选地,当所预测的活动工作项的影响超出可以接受的性能影响阈值时,可以丢弃活动工作项。
当技术不可知的拦截器管理器230从WCF拦截器203接收到事件工作项时,WCF工作项管理器(例如,当工作项管理器240是WCF工作项管理器时的工作项管理器240)可以将事件工作项添加到工作项队列中(例如,当工作项管理器240是WCF工作项管理器时的工作项队列242)。工作项管理器上的工作项调度逻辑(例如,当工作项管理器240是WCF工作项管理器时的工作项调度逻辑244)可以基于所预测的事件工作项对分布式应用程序201的性能的影响来确定是否要调度事件工作项以便执行。当所预测的事件工作项的影响低于可以接受的性能影响阈值时,工作项调度逻辑244可以调度事件工作项以便在线程池220的前台线程222或后台线程224中的一个中执行。然后,WCF组件206的身份监测器(例如,身份监测器260中的一个)可以通过将软件异常报告到WCF组件206的身份监测器的一个或多个客户端来执行事件工作项。可另选地,当所预测的事件工作项的影响超出可以接受的性能影响阈值时,可以丢弃该事件工作项。
可以理解,图2的系统200包括节制功能以减轻监测分布式应用程序201的总体性能影响。例如,依赖关系管理器272可以通过将已发现的依赖关系缓存在依赖关系缓存282中并成批地存储已发现的依赖关系来减少依赖关系存储操作的数量,每一个依赖关系存储操作都可能是耗时的。活动管理器270可以通过将活动信息排队在活动队列280中并当分布式应用程序201相对空闲时(例如,在夜里或在周末)存储排队的活动信息来降低活动存储操作的影响。垃圾回收器284可以通过解除分配不再处于使用中的监测器来减少图2的系统200的存储器占用空间。工作项调度逻辑244可以限制同时执行的工作项的数量。工作项调度逻辑244也可以调度工作项以便在线程池220中优先级比分布式应用程序201的其他线程低的后台线程中执行。即,后台线程将不会中断其他执行的线程以执行调度的工作项。
图3是可以和诸如图1的系统100或图2的系统200之类的监测分布式应用程序的系统一起使用的身份监测器320的特定实施例的框图300。身份监测器320可以是包括诸如组件监测器330之类的一个或多个组件监测器322的监测树的根。监测树也可以包括业务角度监测器340、操作调用目标端点监测器370、计数器监测器350以及仪器监测器360的一个或多个实例。在一说明性实施例中,身份监测器320是图2的身份监测器260中的一个。
身份监测器320可以与分布式应用程序的特定组件相关联。例如,身份监测器320可以与图1的组件110或120或图2的组件205、206或207中的一个相关联。身份监测器320可包括身份监测器320与其相关联的组件的地址321。地址321可以是因特网协议(IP)地址或任何其他地址。例如,身份监测器320可包括图1的.NET组件120的IP地址。身份监测器320也可以包括诸如组件监测器330之类的一个或多个组件监测器322。
组件监测器330可包括一个或多个活动业务角度监测器331,以及诸如业务角度监测器340之类的一个或多个业务角度监测器332。组件监测器330也可以包括诸如操作调用目标端点监测器370之类的一个或多个操作调用监测器333。
诸如业务角度监测器340之类的每一业务角度监测器,都可以为特定业务角度(即,特定消息源)存储计数器和仪器数据。例如,业务角度监测器340可以存储将通过跟踪从图1的WCF组件110发送到图1的.NET组件120的消息而生成的计数器和仪器数据。当消息是XML消息时,业务角度监测器340可包括可对消息执行以标识特定消息源的XML路径语言(XPATH)操作341。业务角度监测器340也可以包括与特定消息源相关联的名称空间342。业务角度监测器340也可以包括诸如计数器监测器350之类的一个或多个计数器监测器343。
计数器监测器350可以跟踪特定事件在分布式应用程序上的发生。计数器监测器350可包括跟踪特定事件的计数器名称351和与该计数器相关联的配置352。例如,计数器监测器350可以跟踪在图2的.NET组件205上发生的并由图2的WCF组件206所引起的异常,并包括名称351“WCF→.NET异常计数器”。计数器监测器350也可以包括诸如仪器监测器360之类的一个或多个仪器监测器353。
诸如仪器监测器360之类的每一仪器监测器可以被配置成在特定时间点存储特定计数器的值。例如,仪器监测器360可以被配置成在特定时间点存储“WCF→.NET异常计数器”的值。在一特定实施例中,仪器监测器360包括特定计数器的当前值361、特定计数器的当前值状态362、以及与该特定计数器相关联的当前窗口363。仪器监测器360也可以包括以前的值364、以前的值状态365、以及前一窗口366。当前值状态362和以前的值状态365可包括指出特定计数器没有被初始化的状态、指出特定计数器被初始化但是没有被读取的状态、指出特定计数器包含有效值的状态、或指出特定计数器由于溢出包含不精确的值的状态。在一特定实施例中,每当特定计数器的值改变时,即分配新的仪器监测器。
操作调用目标端点监测器370可以被配置成存储涉及特定操作调用(例如,函数调用)的数据。在一特定实施例中,操作调用是分布式应用程序的组件内部的。例如,操作调用可以是图1的.NET组件120上的内部函数调用。可另选地,操作调用可以是分布式应用程序的两个组件之间的操作调用。例如,操作调用可以是具有图1的WCF组件110上的源操作和图1的.NET组件120上的目标操作的函数调用。在一特定实施例中,操作调用目标端点监测器370是从对应于端点监测器320的软件类继承的软件类的对象,以使得每一操作调用目标端点监测器包括诸如端点地址321和一个或多个操作监测器322之类的端点监测器320的特征。
应该注意,图3所示出的特定监测树是WCF技术专用的。监测树可包括对于不同的技术的监测器的不同的层次结构。
可以理解,图3的监测树可以被用来组织来自由技术专用的拦截器所生成的工作项的数据,加速了对这样的数据的检索。例如,可以按照操作、按照业务角度、或按照计数器来组织来自特定拦截的消息的数据。当拦截的消息指出操作调用时,也可以按照操作调用来组织数据。
图4是示出了监测分布式应用程序(例如,图1的分布式应用程序102或图2的分布式应用程序201)的消息拦截的框图400。在图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可以将消息460发送到Java组件440。消息460可以在.NET网络接口412处离开.NET组件410,并可以被附加到.NET网络接口412的.NET拦截器420拦截。在拦截消息460时,.NET拦截器420可以检查消息460,以试图发现.NET组件410的依赖关系、跟踪包括.NET组件410的特定执行路径中的活动信息、或跟踪特定事件在.NET组件410上的发生。在检查拦截的消息460之后,.NET拦截器420可以将拦截的消息460发送到Java组件440。
在到达Java组件440之前,可以再次拦截消息460,此时由Java拦截器430拦截。Java拦截器430可以对拦截的消息460执行类似的操作,如上文参考.NET拦截器420所描述的。例如,Java拦截器430也可以检查消息460,以试图发现Java组件440的依赖关系、跟踪包括Java组件440的特定执行路径中的活动信息、或跟踪特定事件在Java组件440上的发生。
应该注意,在任何一个方向发送的消息都可以被拦截和检查。例如,从Java组件440发送到.NET组件410的第二消息470也可以被拦截和检查,以发现依赖关系、跟踪活动信息、以及跟踪事件发生。还应注意,虽然图4中所示出的特定实施例示出了被附加到两个组件的拦截器,但是,甚至在两个组件之间的消息路径中只存在一个拦截器的情况下,也可以在两个组件之间发现依赖关系。例如,当Java拦截器430不存在时,.NET组件410和Java组件440之间的依赖关系仍然可以被.NET拦截器420发现。类似地,当Java拦截器430不存在时,.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中,WCF拦截器112可以基于拦截的消息来生成至少一个潜在工作项。
方法500还包括在510确定是否要调度至少一个潜在工作项。基于所预测的至少一个潜在工作项对分布式应用程序的性能的影响,作出此判断。例如,在图1中,WCF工作项调度逻辑144可以基于所预测的至少一个潜在工作项对分布式应用程序102的性能的影响来确定是否要调度至少一个潜在工作项以便执行。
可以理解,可以使用图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中,WCF拦截器112可以基于拦截的消息来生成至少一个潜在工作项,并将该至少一个潜在工作项发送到技术专用的拦截器管理器,其中,该至少一个潜在工作项被插入WCF工作项队列142中。
方法600还包括在610计算所预测的至少一个潜在工作项对分布式应用程序的性能的影响。预测的影响可以是对处理器使用率的影响、对消息延迟的影响、或对执行队列长度的影响。例如,在图1中,工作项调度逻辑144可以计算所预测的至少一个潜在工作项的影响,其中,预测的影响是对分布式应用程序102上的处理器使用率的影响、对分布式应用程序102上的消息延迟的影响或对分布式应用程序102的执行队列长度的影响。方法600还包括在612确定所预测的影响是否小于可以接受的性能影响阈值。例如,在图1中,工作项调度逻辑144可以确定所预测的至少一个潜在工作项的性能影响是否小于可以接受的性能影响阈值。
当确定所预测的影响小于可以接受的性能影响阈值时,该方法包括在614调度至少一个潜在工作项以便执行,并执行至少一个潜在工作项。例如,当确定所预测的影响小于可以接受的性能影响阈值时,WCF工作项调度逻辑144可以调度至少一个潜在工作项以便执行,并可以执行该至少一个潜在工作项。当确定所预测的影响不小于可以接受的性能影响阈值时,该方法包括在616丢弃该至少一个潜在工作项。例如,当确定所预测的影响不小于可以接受的性能影响阈值时,WCF工作项调度逻辑144可以通过从工作项队列142中删除该至少一个潜在工作项来丢弃它,而不调度该至少一个潜在工作项以便执行。可另选地,在图1中,WCF工作项调度逻辑144可以允许至少一个潜在工作项保留在WCF工作项队列142中,其中,至少一个潜在工作项将自动地过期。
可以理解,图6的方法600可以被用来基于所预测的至少一个潜在工作项对分布式应用程序的性能的影响来有选择地调度至少一个潜在工作项以便执行。还可以理解,可以从工作项队列中删除具有预测的高度性能影响的工作项,为随后接收到的工作项释放工作项队列中空间。
图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基于拦截的消息来生成至少一个潜在工作项。例如,WCF拦截器203可以基于拦截的消息来生成至少一个潜在工作项。方法700还包括在710确定是否要调度至少一个潜在工作项以便执行。基于所预测的至少一个潜在工作项对分布式应用程序的性能的影响,来作出此判断。例如,在图2中,WCF工作项调度逻辑244可以基于所预测的至少一个潜在工作项对分布式应用程序201的性能的影响来确定是否要调度至少一个潜在工作项以便执行。
方法700还包括在712计算涉及分布式应用程序的至少一个度量,如所生成的异常的数量或报告的错误的数量。例如,在图2中,技术不可知的拦截器管理器230可以从WCF拦截器203接收指出WCF组件206上的异常的工作项,并对接收到的这样的工作项的数量计数。在一特定实施例中,异常可以由图3的身份监测器320之类的身份监测器来计数。方法700还包括在714检测分布式应用程序的故障情况。例如,可以检测图2的分布式应用程序201的故障情况。方法700还包括在716基于至少一个度量将特定组件标识为故障情况的潜在原因。例如,在图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的用于活动监测的路径。
在用于事件监测的路径中,方法800包括在808分配计数器监测器以跟踪特定事件的发生。例如,在图2中,可以分配计数器监测器以跟踪WCF组件206上的异常,其中,计数器监测器位于WCF组件206的身份监测器(例如,身份监测器260中的一个)的监测树上。在一特定实施例中,已分配的计数器监测器包括图3的计数器监测器350。方法800还包括在810拦截涉及技术专用的拦截器上的特定事件的消息。例如,在图2中,WCF拦截器203可以拦截指出在WCF组件206上发生异常的消息。方法800还包括在812生成指出特定事件的发生的工作项。例如,在图2中,WCF拦截器203可以生成指出在WCF组件206上发生异常的工作项。方法800还包括在814向计数器监测器的一个或多个客户端报告特定事件的发生。在一特定实施例中,当一个或多个客户端轮询计数器监测器时,可以报告特定事件的发生。例如,在图2中,可以将异常在WCF组件206上的发生向WCF组件206的身份监测器的一个或多个客户端(例如,身份监测器260中的一个)报告。
在用于活动监测的路径中,方法800包括在816分配活动监测器以跟踪沿着特定执行路径的活动。例如,在图2中,可以分配活动业务角度监测器以跟踪沿分布式应用程序201的包括WCF组件206的特定执行路径的活动,其中,活动业务角度监测器位于WCF组件206的端点监测器(例如,端点监测器260中的一个)的监测树中。在一特定实施例中,活动业务角度监测器包括图3的业务角度监测器340。方法800还包括在818拦截涉及技术专用的拦截器上的特定执行路径的消息。例如,在图2中,WCF拦截器203可以拦截指出沿着分布式应用程序201的特定执行路径的活动的消息。方法800还包括在820生成包括涉及特定执行路径的活动信息的工作项。例如,图2的WCF拦截器203可以生成包括涉及特定执行路径的活动信息的工作项。方法800还包括在822将活动信息存储在活动队列中,并在824通过存储服务将活动信息从活动队列传输到存储位置。例如,在图2中,活动管理器270可以将活动信息存储在活动队列280中,并可以随后通过存储服务290将活动信息从活动队列280传输到存储位置。
可以理解,图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中的一个)。在一特定实施例中,所分配的操作调用监测器可包括图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可以通过存储服务290将依赖关系从依赖关系缓存282传输到存储位置。当依赖关系先前已经被存储时,方法900包括在922不存储依赖关系。例如,在图2中,依赖关系管理器272可以从依赖关系缓存282中删除依赖关系而不存储依赖关系。
可以理解,可以使用图9的方法900来发现分布式应用程序中的各种源操作和目标操作之间的依赖关系,包括组件之间的依赖关系。还可以理解,图9的方法900可以通过只存储先前没有被存储的已发现的依赖关系来降低这样的依赖关系发现的性能影响。
图10是在技术不可知的拦截器管理器上有选择地调度工作项的方法1000的特定实施例的流程图。在一说明性实施例中,方法1000可以由图1的技术不可知的拦截器管理器130或图2的技术不可知的拦截器管理器230来执行。方法100包括在1002在技术不可知的拦截器管理器处从被附加到分布式应用程序的第一组件的第一技术专用的拦截器接收第一工作项。第一技术专用的拦截器是第一技术专用的,并且,第一组件与第一技术相关联。例如,在图1中,技术不可知的拦截器管理器130可以从被附加到分布式应用程序102中的WCF组件110的WCF拦截器112接收第一工作项。
方法1000还包括在1004在技术不可知的拦截器管理器处从被附加到分布式应用程序的第二组件的第二技术专用的拦截器接收第二工作项。第二技术拦截器是第二技术所专用的,第二组件与第二技术相关联,而第二技术不同于第一技术。例如,在图1中,技术不可知的拦截器管理器130可以从被附加到分布式应用程序102中的.NET组件120的.NET拦截器122接收第二工作项。
方法1000还包括在1006确定是否要调度第一工作项和第二工作项以便执行。基于第一工作项对分布式应用程序的第一影响,并基于第二工作项对分布式应用程序的预测的影响,来作出此判断。例如,在图1中,WCF工作项调度逻辑144可以基于第一工作项对分布式应用程序102的第一影响来确定是否要调度第一工作项,而.NET工作项调度逻辑154可以基于第二工作项对分布式应用程序102的第二影响来确定是否要调度第二工作项。
可以理解,图10的方法1000可以被技术不可知的拦截器管理器(例如,图1的技术不可知的拦截器管理器130或图2的技术不可知的拦截器管理器230)用来基于所预测的工作项的影响,有选择地调度工作项以便执行。如此,可以拦截,图10的方法1000可以被技术不可知的拦截器管理器用来避免干扰实时、几乎实时、或关键分布式应用程序的常规执行。技术不可知的拦截器管理器可以不调度对实时、几乎实时、或关键分布式应用程序具有预测的高度影响的工作项。
图11是示出了分布式计算环境1100的特定实施例的一般图。分布式计算环境1100可包括分布式应用程序1110,应用程序1110包括一个或多个被监测的应用程序组件,如被监测的Web客户端1111、被监测的web服务器1112、被监测的应用程序服务器1113,以及被监测的数据库服务器1114。分布式计算环境1100也可以包括可通信地耦合到分布式应用程序1110的组件的管理服务器1120,以及根管理服务器1130、操作数据库服务器1140、以及数据仓库服务器1150。在一特定实施例中,分布式计算环境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可以由一个或多个附加的技术专用的拦截器进行监测。技术特定拦截器也可以生成工作项,并将工作项发送到管理服务器1120上的技术不可知的拦截器管理器。然后,管理服务器1120上的技术不可知的拦截器管理器可以基于所预测的对分布式应用程序1110的影响,或基于所预测的对特定分布式应用程序组件(例如,组件1111-1114中的一个)的影响,有选择地调度接收到的工作项以便执行。
可以理解,管理服务器1120可以监测不同类型的分布式应用程序组件(例如,Web客户端、web服务器、应用程序服务器以及数据库服务器)上的函数调用、活动以及事件。
图12示出了根据本公开的计算环境1200的框图,包括可以支持计算机实现的方法、计算机程序产品,以及系统组件的实施例的计算设备1210。
计算设备1210通常包括至少一个处理器1220和系统存储器1230。取决于计算设备的确切配置和类型,系统存储器1230可以是易失性的(如随机存取存储器或“RAM”)、非易失性的(如只读存储器或“ROM”、闪存,以及甚至在不提供电源的情况下也能保留存储的数据的类似的存储器设备),或两个的某种组合。系统存储器1230通常包括操作系统1232、一个或多个应用程序平台1234、一个或多个应用程序1236,并可包括程序数据1238。例如,系统存储器1230可包括分布式应用程序的一个或多个组件,如图1的WCF组件110、图2的WCF组件206、图1的.NET组件120、图2的.NET组件205,或图2的Java组件207。当计算设备1210包括组件时,计算设备1210也可以包括被附加到组件的一个或多个技术专用的拦截器。例如,计算设备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),而每一这样的计算设备都可包括分布式应用程序的一个或多个组件。
计算设备1210还可具有附加特征或功能。例如,计算设备1210还可包括可移动和/或不可移动附加数据存储设备,诸如磁盘、光盘、磁带和标准大小的或微型闪存卡。在图12中通过可移动存储1240和不可移动存储1250示出了这样的附加存储。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序组件或其他数据的信息的任何方法和/或技术实现的易失性和/或非易失性存储器、可移动和/或不可移动介质。系统存储器1230、可移动存储1240和不可移动存储1250都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术、紧致盘(CD)、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储所希望的信息且可以由计算设备1210访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备1210的一部分。计算设备1210也可包括输入设备1260,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。也可包括输出设备1270,如显示器、扬声器、打印机等等。
计算设备1210还包含一个或多个通信连接1280,它们允许计算设备1210通过有线或无线网络与诸如一个或多个客户端计算系统或其他服务器之类的其他计算设备1290进行通信。例如,一个或多个通信连接1280可包括图5的网络接口512或542。一个或多个通信连接1280是通信介质的一个示例。作为示例而非限制,通信介质可包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。然而,可以理解,并非所有图12所示或以其他方式在先前的附图中描述的组件或设备都必须支持此处所描述的实施例。
这里所描述的实施例的说明旨在提供对各实施例的结构的一般理解。说明不旨在作为利用这里所描述的结构或方法的装置和系统的所有元件和特征的完整描述。许多其他实施例对本领域的技术人员在审阅本发明后是显而易见的。也可以利用其他实施例,并从本发明派生出其他实施例,以便可以在不偏离本发明的范围的情况下作出结构和逻辑上的替换和改变。相应地,本发明和附图应被视为说明性的,而不是限制性的。
本领域技术人员将进一步理解,结合这里所说明的实施例所描述的各种说明性逻辑块、配置、模块、电路、以及算法步骤,可以作为电子硬件、计算机软件或两者的组合来实现。为清楚地示出硬件或软件的此互换性,上文已经一般地在功能方面描述了各种说明性组件、块、配置、模块、电路,以及步骤。此类功能集是被实现为硬件还是软件取决于具体应用和强加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能集,但此类设计决策不应被解释为致使脱离本公开的范围。
结合此处所公开的各实施例所描述的方法的各个步骤可直接用硬件、由处理器执行的软件模块、或两者的组合来实现。软件模块可驻留在诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、寄存器、硬盘、可移动盘、CD-ROM、或本领域内已知的任何其他形式的存储介质等计算机可读介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取/写入信息。在替换方案中,存储介质可以集成到处理器中,或者处理器和存储介质可以作为分立的元件驻留在计算机系统中。
虽然这里显示和描述了具体的实施例,但是,应该了解,被设计为实现相同或类似的目的的任何随后的安排都可以代替所示出的具体实施例。本说明书计划涵盖各种实施例的任何随后的修改或变化。
提交本发明的摘要的同时要明白,将不用它来解释或限制权利要求的范围或含义。此外,在前面的具体实施方式中,出于将本公开连成一个整体的目的,各种特征可以组合到一起,或在一个实施例中进行描述。本发明不应被解释为反映带权利要求的实施例需要比每一个权利要求中明确地记载的特征更多的特点的意图。相反,如下面的权利要求所反映的,本发明的主题可以涉及少于所公开的实施例中的任一个的所有特征。
提供上文对所公开的实施例的描述,以使本领域技术人员能作出或使用所公开的实施例。对这些实施例的各种修改对于本领域技术人员将是显而易见的,并且本文中定义的普适原理可被应用于其他实施例而不会脱离本公开的范围。因此,本发明并不旨在限于此处所示出的各实施例,而是按照与所附权利要求书所定义的原理和新颖特征相一致的尽可能最宽的范围。

Claims (15)

1.一种监测方法,包括:
标识(502)分布式应用程序(102)的多个组件(110,120);
标识(504)与所述多个组件(110,120)中的特定组件(110)相关联的特定技术;
基于所述所标识的特定技术,将技术专用的拦截器(112)附加(506)到所述特定组件(110),并使用所述附加的技术专用的拦截器(112),拦截由所述特定组件(110)所发送的或接收到的消息;
基于所拦截的消息,生成(508)至少一个潜在的工作项;以及
基于所预测的所述至少一个潜在的工作项对所述分布式应用程序(102)的性能的影响,来确定(510)是否要调度所述至少一个潜在工作项以便执行。
2.如权利要求1所述的方法,其特征在于,当所预测的所述至少一个潜在工作项的影响低于可以接受的性能影响阈值时,调度所述至少一个潜在工作项以便执行,并且,其中,当所预测的所述至少一个潜在工作项的影响超出所述可以接受的性能影响阈值时,不调度所述至少一个潜在工作项来执行。
3.如权利要求1所述的方法,其特征在于,所预测的所述至少一个潜在工作项的影响指示对所述分布式应用程序上的处理器使用率、所述分布式应用程序上的消息延迟、所述分布式应用程序上的执行队列长度或其任何组合的影响。
4.如权利要求1所述的方法,其特征在于,当所述至少一个潜在工作项在工作项有效期内未被调度时所述至少一个潜在工作项过期。
5.如权利要求1所述的方法,其特征在于,还包括执行所述分布式应用程序上的所述至少一个潜在工作项,其中,所述至少一个潜在工作项包括存储涉及所述分布式应用程序的已发现的依赖关系信息的指令、存储涉及所述分布式应用程序的已监测的活动信息的指令、报告涉及所述分布式应用程序的性能计数器信息的指令或其任何组合。
6.如权利要求5所述的方法,其特征在于,还包括基于所述拦截的消息,分配操作调用监测器以跟踪对特定组件上的特定函数的调用。
7.如权利要求6所述的方法,其特征在于,所述特定函数具有源操作和目标操作,其中,所述至少一个潜在工作项指示所述源操作和所述目标操作之间的依赖关系,并且,其中,执行所述至少一个潜在工作项包括将所述依赖关系存储在依赖关系缓存中。
8.如权利要求7所述的方法,其特征在于,还包括响应于确定所述依赖关系先前没有被存储,通过存储服务将所述依赖关系从所述依赖关系缓存传输到存储位置。
9.如权利要求5所述的方法,其特征在于,还包括分配活动监测器以跟踪所述特定组件上的特定执行路径的活动,其中,所述至少一个潜在工作项包括涉及所述特定执行路径的活动信息,并且,其中,执行所述至少一个潜在的工作项包括将所述活动信息存储在活动队列中。
10.如权利要求9所述的方法,其特征在于,还包括通过存储服务将所述活动信息从所述活动队列传输到存储位置。
11.如权利要求5所述的方法,其特征在于,还包括基于所述拦截的消息,分配计数器监测器以跟踪特定事件的发生,其中,所述至少一个潜在工作项指示所述特定事件的至少一次发生,并且,其中,执行所述至少一个潜在工作项包括将向所述计数器监测器的一个或多个客户端报告所述特定事件的至少一次发生。
12.如权利要求1所述的方法,其特征在于,还包括:
计算涉及所述分布式应用程序的至少一个度量,其中,所述至少一个度量包括生成的异常的数量、报告的错误的数量、或其任何组合;
检测所述分布式应用程序的故障情况;以及
基于所述至少一个度量,将所述特定组件标识为所述故障情况的潜在原因。
13.一种监测系统,包括:
包括与第一技术相关联的第一技术专用的拦截器(202)和与不同于所述第一技术的第二技术相关联的第二技术专用的拦截器(203)的多个技术专用的拦截器;以及,技术不可知的拦截器管理器(230);
其中,所述第一技术专用的拦截器(202)被配置成:
跟踪与所述第一技术相关联的第一分布式应用程序组件(205)的操作,包括拦截由所述第一分布式应用程序组件(205)所发送的和接收到的消息;
基于所跟踪的所述第一分布式应用程序组件(205)的操作,生成工作项;以及
基于所跟踪的所述第一分布式应用程序组件(205)的操作,将所述工作项发送到所述技术不可知的拦截器管理器(230);
其中,所述第二技术专用的拦截器(203)被配置成:
跟踪与所述第二技术相关联的第二分布式应用程序组件(206)的操作,包括拦截由所述第二分布式应用程序组件(206)所发送的和接收到的消息;
基于所跟踪的所述第二分布式应用程序组件(206)的操作,生成工作项;以及
基于所跟踪的所述第二分布式应用程序组件(206)的操作,将所述工作项发送到所述技术不可知的拦截器管理器(230);以及
其中,所述技术不可知的拦截器管理器(230)包括多个工作项管理器(240),包括与所述第一技术专用的拦截器(202)相关联的第一工作项管理器,以及与所述第二技术专用的拦截器(203)相关联的第二工作项管理器;
其中,每一工作项管理器(240)都与特定技术专用的拦截器相关联,并被配置成:
接收来自所述特定技术专用的拦截器的工作项;
将所述接收到的工作项排队在工作项队列(242)中;
将由所述特定技术专用的拦截器跟踪的特定工作项对分布式应用程序组件的性能的影响与可以接受的性能影响阈值进行比较;
当所述影响小于所述可以接受的性能影响阈值时,调度所述特定工作项以便执行;以及
当所述影响大于所述可以接受的性能影响阈值时,丢弃所述特定工作项,而不调度所述特定工作项来执行。
14.如权利要求13所述的系统,其特征在于,每一技术专用的拦截器还被配置成向其相关联的工作项管理器请求空的工作项,通过将信息存储在所述空工作项中生成工作项,并将所生成的工作项发送到所述技术不可知的拦截器管理器。
15.如权利要求13所述的系统,其特征在于,所述工作项管理器中的每一个还被配置成:
限制同时执行的工作项的数量;
限制所述工作项队列的大小;
当所述工作项队列满时拒绝接收到的工作项;
调度特定工作项以便在线程池的前台线程中或在所述线程池的后台线程中执行;以及
限制所述线程池的同时执行的线程的数量。
CN201080014022.3A 2009-03-24 2010-03-19 对分布式应用程序的监测 Expired - Fee Related CN102369523B (zh)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
CN102369523A true CN102369523A (zh) 2012-03-07
CN102369523B CN102369523B (zh) 2015-09-09

Family

ID=42781786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080014022.3A Expired - Fee Related CN102369523B (zh) 2009-03-24 2010-03-19 对分布式应用程序的监测

Country Status (7)

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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103823659A (zh) * 2012-11-19 2014-05-28 苏州博远容天信息科技有限公司 一种通讯多线程技术
CN106326099A (zh) * 2015-07-01 2017-01-11 阿里巴巴集团控股有限公司 一种用于程序跟踪的方法、装置及电子设备
CN107291601A (zh) * 2017-06-12 2017-10-24 北京奇艺世纪科技有限公司 一种安全运维方法及系统
CN109073350A (zh) * 2016-04-29 2018-12-21 思科技术公司 应用性能数据的预测性汇总和缓存
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
CN114745153A (zh) * 2022-03-10 2022-07-12 北京汇元网科技股份有限公司 WFC和log4net结合的链路跟踪方法

Families Citing this family (27)

* 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
US20110252422A1 (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
US9215270B2 (en) * 2010-08-09 2015-12-15 Servicenow, Inc. System and method for determining a topology of at least one 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
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
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
US10210020B2 (en) * 2016-06-29 2019-02-19 International Business Machines Corporation Scheduling requests in an execution environment
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
US11243695B2 (en) 2020-05-28 2022-02-08 International Business Machines Corporation Leasing unordered items in namespace indices
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
DE102020209512A1 (de) 2020-07-28 2022-02-03 Volkswagen Aktiengesellschaft Verfahren und Vorrichtung zum Bestimmen eines Betriebszustands mindestens einer Anwendung
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038738A1 (en) * 2005-07-26 2007-02-15 International Business Machines Corporation System and method for adaptively collecting performance and event information
US20070118386A1 (en) * 2005-11-18 2007-05-24 Oracle International Corporation Capturing data from user selected portions of a business process and transferring captured data to user identified destinations
WO2008119961A1 (en) * 2007-03-30 2008-10-09 British Telecommunications Public Limited Company Distributed computer system

Family Cites Families (53)

* 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
US7139811B2 (en) * 2001-08-01 2006-11-21 Actona Technologies Ltd. Double-proxy remote data access system
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
CA2480955A1 (en) * 2002-04-19 2003-10-30 Rutvik Doshi System and method for monitoring a computer application
KR100772999B1 (ko) 2002-06-25 2007-11-05 인터내셔널 비지네스 머신즈 코포레이션 분산 환경에서 어플리케이션의 성능을 모니터링하는 방법및 시스템
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 株式会社日立製作所 分散処理システム及びその性能モニタリング方法
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
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 国际商业机器公司 用于系列服务消息处理的方法、设备和系统
US9645845B2 (en) * 2007-09-27 2017-05-09 Sap Se Triggering job execution in application servers based on asynchronous messages sent by scheduling tasks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070038738A1 (en) * 2005-07-26 2007-02-15 International Business Machines Corporation System and method for adaptively collecting performance and event information
CN101223509A (zh) * 2005-07-26 2008-07-16 国际商业机器公司 用于自适应地收集性能和事件信息的系统和方法
US20070118386A1 (en) * 2005-11-18 2007-05-24 Oracle International Corporation Capturing data from user selected portions of a business process and transferring captured data to user identified destinations
WO2008119961A1 (en) * 2007-03-30 2008-10-09 British Telecommunications Public Limited Company Distributed computer system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MALU CASTELLANOS, FABIO CASATI, MING-CHIEN SHAN, UMESH DAYAL: "iBOM: A Platform for Intelligent Business Operation Management", 《ICDE 2005》 *
XUEJUN CHEN, AND MARTIN SIMONS: "A Component Framework for Dynamic Reconfiguration of Distributed Systems", 《SPRINGER-VERLAG BERLIN HEIDELBERG 2002》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103823659A (zh) * 2012-11-19 2014-05-28 苏州博远容天信息科技有限公司 一种通讯多线程技术
CN106326099A (zh) * 2015-07-01 2017-01-11 阿里巴巴集团控股有限公司 一种用于程序跟踪的方法、装置及电子设备
CN109073350A (zh) * 2016-04-29 2018-12-21 思科技术公司 应用性能数据的预测性汇总和缓存
CN107291601A (zh) * 2017-06-12 2017-10-24 北京奇艺世纪科技有限公司 一种安全运维方法及系统
CN111897600A (zh) * 2020-07-31 2020-11-06 惠州Tcl移动通信有限公司 减少应用内存占用的方法、装置、移动终端及系统
CN114745153A (zh) * 2022-03-10 2022-07-12 北京汇元网科技股份有限公司 WFC和log4net结合的链路跟踪方法
CN114745153B (zh) * 2022-03-10 2024-02-27 北京汇元网科技股份有限公司 WCF和log4net结合的链路跟踪方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN102369523A (zh) 对分布式应用程序的监测
US20200133750A1 (en) Methods, apparatus and computer programs for managing persistence
US9584617B2 (en) Allocating cache request in distributed cache system based upon cache object and marker identifying mission critical data
US7810075B2 (en) Common trace files
CN102089775B (zh) 具有用于缓解和自动防护的责任约束服务等级协议及模式的服务性能管理器
US8756613B2 (en) Scalable, parallel processing of messages while enforcing custom sequencing criteria
CN106487574A (zh) 自动化运行维护监测系统
US9367578B2 (en) Method and system for message tracking and checking
US20100223629A1 (en) Data Event Processing and Application Integration in a Network
CN101114978A (zh) 高速缓存发往应用服务器的客户机请求的系统和方法
CN105760240A (zh) 分布式任务处理方法及装置
CN104216763A (zh) 用于解决在受管基础架构中发生的事件的方法和系统
US9176783B2 (en) Idle transitions sampling with execution context
US8554908B2 (en) Device, method, and storage medium for detecting multiplexed relation of applications
CN114218046A (zh) 一种业务监控方法、介质、电子设备及可读存储介质
CN114510352B (zh) 一种自动渗透项目调度任务方法及系统
JP2004164610A (ja) 管理装置
CN111983960A (zh) 一种监控系统及方法
CN110704545B (zh) 用于数据源供应商的数据调用方法及装置
CN115421889A (zh) 进程间的请求管理方法、装置、电子设备及存储介质
CN110300958B (zh) 用于分布式事务中间件环境中的条件调用路径监视的系统和方法
KR20230075076A (ko) 메시지큐를 이용한 무중단 로그 전송 시스템 및 방법
CN116055355A (zh) 基于企业服务总线的接口监测方法和系统
CN116185750A (zh) 一种分布式计数系统和计数方法
CN115396498A (zh) 信息发布方法、装置、系统、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150909