基于资源访问模式预测、诊断应用故障并从其恢复的制作方法

文档序号:6443295阅读:331来源:国知局
专利名称:基于资源访问模式预测、诊断应用故障并从其恢复的制作方法
技术领域
本发明涉及故障恢复。
背景技术
在计算机系统上执行的软件应用可能由于各种原因而发生故障,诸如代码隐错、 用户错误、不正确的输入数据、不可用资源等。这些应用故障可能会造成数据丢失和应用停工期,并且可能引起与恢复应用和数据相关的成本和时间。可以预期在给定相同输入、条件和/或情境的情况下,在公共环境中运行或来自公共安装的应用会遇到相同的故障。这可以是应用在虚拟应用环境中运行的情形。应用虚拟化允许由计算机执行的软件应用与计算机的硬件、操作系统(“OS”)和本地配置去耦。应用虚拟化可以消除对要在计算机上本地安装、配置和维护应用的要求。作为替代,虚拟应用环境可以在计算机上执行并且通过网络从集中维护在虚拟应用服务器上的虚拟化应用包流传送应用组件。本文所做出的公开正是对于这些和其它考虑而提出的。

发明内容
本文描述了用于区分应用程序的正常操作与错误条件以预测、诊断应用故障并从其恢复的技术。当应用程序运行在虚拟应用环境中时,虚拟化层或虚拟应用环境可以知晓并控制应用对资源的请求,诸如从数据文件读取、对注册表项写入等等。利用本文所述的技术,虚拟化层可以记录对资源的访问,并随时间建立资源使用的公共模式。一旦这种资源访问模式被建立,虚拟化层可以继续监视应用程序对资源的使用并在模式改变时提供警告或警报。这种抢先警告可以向应用程序的用户或管理员提供快速采取诊断或校正动作的机会,从而减少、甚至防止停工期和数据丢失。应该意识到,应用程序通常具有向用户或管理员显示错误的手段,类似弹出式对话框或在应用或系统事件日志中记录的事件。然而,这些错误消息的质量和利用可能随应用不同而显著改变。提供允许确定错误源的高质量错误消息需要大量投入,而缺并非所有的软件商都作出了这种投入。利用本文所述的对资源的访问日志以及所建立的公共模式来对哪些资源正被访问或就在错误条件之前模式如何改变进行关联,可以允许用户和/或管理员更快速地诊断应用故障并实现恢复动作,从而减少应用停工期。此外,由于虚拟化层知道应用程序对资源的所有使用,它能够记录资源添加、修改或删除以及在随时间发生的这些资源修改中使用的数据。如果应用程序故障,可以立即启动应用程序的第二实例,并且可以重放资源修改和数据的日志,从而使应用状态刚好还原到刚好在应用第一实例故障之前的点。应用实例之间的这种快速故障转移(failover)可以限制进一步的停工期。根据实施例,监视在虚拟应用环境中执行的应用程序对资源的访问,并且将资源访问事件记录在资源访问日志中。利用计算机模式识别技术,从所记录的资源访问事件建立资源访问模式。如果应用程序后续对资源的访问偏离所建立的模式,则基于所检测的偏离向应用程序的用户和/或管理员通知可能的错误条件。此外,可以基于错误条件发生时间的时间接近度,将从所建立的资源访问模式偏离的资源访问事件序列与错误条件相关联,以向用户和/或管理员提供关于错误的诊断信息。最后,在应用故障以及随后重启应用的事件中,可以重放资源访问日志中记录的关于数据添加、修改和删除的资源访问事件,以重建应用程序的应用状态。应该意识到,上述主题可被实现为计算机控制的装置、计算机进程、计算系统或诸如计算机可读介质等的制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其它特征将变得显而易见。提供本发明内容以便以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所请求保护的主题不限于解决在本公开的任一部分中提及的任何或所有缺点的实现。


图1是示出由本文呈现的实施例所提供的说明性操作环境和若干软件组件的多方面的框图;图2-4是示出根据本文所述实施例用于区分应用程序的正常操作与错误条件以预测、诊断应用故障并从其恢复的方法的流程图;以及图5是示出能够实现本文呈现的实施例的多方面的计算系统的说明性计算机硬件和软件体系结构的框图。
具体实施例以下详细描述涉及用于基于资源访问的模式来区分应用程序的正常操作与错误条件以便预测、诊断应用故障和/或从其恢复的技术。尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了本文描述的主题,但是本领域技术人员将认识到,其它实现可以结合其它类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其它计算机系统配置来实施本文描述的主题, 这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。在以下详细描述中,参考了构成其一部分并作为说明示出各具体实施例或示例的附图。在附图中,在全部若干附图中相似的附图标记表示相似的元素。图1示出根据本文所提供实施例非说明性操作环境100,包括用于区分应用程序的正常操作与错误条件以预测、诊断应用故障并从其恢复的若干软件组件。环境100包括计算机102。计算设备102可以是服务器计算机;个人计算机(“PC”),诸如台式工作站、 膝上型计算机或笔记本计算机;个人数字助理(“PDA”);无线电话;机顶盒;游戏控制台; 或可以执行应用程序的任何其它计算设备。软件应用程序104在计算机102上执行。根据实施例,应用程序104可以在虚拟应用环境106内执行。虚拟应用环境106可允许计算设备102启动并执行之前尚未安装在计算机上的应用程序。虚拟应用环境106可以改为通过网络110实时地或近乎实时地从虚拟应用服务器112流传送应用程序104的组件。虚拟应用环境106和虚拟应用服务器112 可以基于来自华盛顿州雷蒙德市微软公司的MICROSOFT APP-V技术、来自佛罗里达州劳德代尔堡市的CITRIXSYSTEMS有限公司的CITRIX XENAPP 技术或任何其它应用流传送和虚拟化平台或技术。网络110可以是LAN、广域网(“WAN”)、因特网或将计算机102连接到虚拟应用服务器112的任何其它联网拓扑。应用程序104的软件组件可被存储在位于虚拟应用服务器112可访问的存储设备上的虚拟化应用包114中。根据实施例,虚拟化应用包114由多个数据块组成,数据块包含应用程序结构信息以及各个组件文件和应用的其它元素。虚拟化应用包114还可包括与由应用程序104在执行期间利用的本地和远程资源的位置和配置相关的元数据。虚拟化应用包114可以由应用程序104的管理员通过在管理服务器上执行应用的典型安装并记录对如本地文件系统、注册表等等作出的改变来创建。虚拟化应用包114中的块然后被流传送到虚拟应用环境106以允许应用程序104在计算机102上执行。虚拟应用环境106可以创建单独的虚拟运行时环境(被称为“应用沙箱 (application sandbox)")以执行从虚拟应用服务器112流传送的每个应用程序104。应用沙箱允许应用程序104的组件与系统的其余部分隔离地执行。虚拟应用环境106还可以提供提取对由应用程序104在执行期间利用的本地资源118A和远程资源118B(本文中被统称为资源11 的访问的虚拟化层116。资源118可以包括在计算机102本地可用或通过网络110远程可用的系统存储器、本地处理器时间或处理线程、存储在文件系统中的文件、 存储在注册表数据库中的数据、应用服务、演示服务、数据库服务等等。应用程序104可以通过由安装在计算机102上的操作系统122或其它标准软件库实现的资源应用编程接口(API)来访问本地和远程资源118。根据实施例,虚拟化层116提取资源API 120以便监视和控制由在虚拟应用环境106中执行的应用程序104对本地和远程资源118的访问请求。此外,虚拟化层116可以将应用程序104对资源118的访问记录在资源访问日志124中。资源访问日志IM可以包括本地文件系统中的日志文件、远程数据库服务器上的多个数据库表、两者的组合或可由计算机102访问的任何其它数据存储系统。资源访问日志IM可以包含资源访问事件126的日志。资源访问事件1 可以包括由在虚拟应用环境106中执行的应用程序104作出的、对资源API 120的调用的细节。 资源访问事件126的每一个可以包括指示资源访问何时发生的时间戳、所调用的各个资源 API 120的标识符、以及指示正被访问的本地或远程资源118的资源类型、位置或其它方面的多个参数值。资源访问事件126可以被存储为日志文件中的条目、数据库表中的行、字典 (dictionary)中的对象或者以本领域中已知的任何其它数据结构或格式来存储。在一个实施例中,资源访问日志124还包含资源访问模式128。资源访问模式1 可以包括定期发生的应用程序104的资源访问模式。例如,应用程序104可以在时间Tl读取特定注册表项,随后在时间Tl+MOmsec (毫秒)对位于远程文件系统的特定文件进行写入。此外,读取注册表项并写入文件的这一模式可以例如响应于特定事件或条件、周期性地或者在一天的特定时间发生多于一次。资源访问模式1 可以在特定API调用之间、在对
5特定资源的API调用之间、或者对特定量的资源(诸如所分配的存储器量或所启动的线程数量)的API调用之间建立。资源访问模式1 可以从使用模式识别技术在某时段收集的资源访问事件1 建立。例如,事件类型的子集可被确定为重要,并且可以利用贝叶斯学习技术来在收集时段内的这些类型的资源访问事件1 上建立资源访问模式128。所生成的资源访问模式1 可被存储为例如马尔可夫链或概率树,指示资源访问事件之间的相对发生概率。根据一个实施例,资源访问模式1 可以在与应用程序104的执行并行的后台进程中,根据资源访问事件126的日志在计算机上近乎实时地生成。在另一实施例中,由在虚拟应用环境106中执行应用程序104的多个计算机102上的虚拟化层116记录的资源访问事件126可被聚集到中央位置。可以通过例如移除计算机相关的资源路径来泛化 (genericize)所聚集的事件数据,并且可以从所聚集和泛化的事件数据来建立资源访问模式128。然后可以将所生成的资源访问模式1 发送到执行应用程序104的每个计算机102 以便在预测应用故障时利用模式,如以下参照图2更详细描述。在另一实施例中,资源访问日志IM还包含资源写入数据130。资源写入数据130 可以包含由应用程序104调用添加、修改或删除数据的资源API 120的日志,诸如注册表值写入或I/O缓冲器写入。资源写入数据130可以包含来自指针或结构-类型参数的“深副本(de印copy)”以便包括正在写入的数据。此外,可以使用执行应用程序104的当前上下文,泛化任何文件名、键名、地址或其它位置参数。应该明白,可以将资源写入数据130和资源访问事件126集成为资源访问日志124的单个日志文件或其它结构。在从应用故障恢复期间,可以利用资源写入数据130还原应用程序104的应用状态,如以下参照图4更详细描述。现在参照图2-4,提供关于本文所呈现实施例的附加细节。应该明白,针对图2-4 所述的逻辑操作被实现为(1)在计算系统上运行的计算机实现动作序列或程序模块序列和/或(2)计算系统内的互连机器逻辑电路或电路模块。取决于计算系统的性能及其它要求,可以选择不同的实现。因此,本文所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑、及其任何组合来实现。还应该明白,可以执行比附图中示出并在本文描述的操作更多或更少的操作。这些操作还可按与所述次序不同的次序来执行。图2示出根据本文所述的实施例、基于从所建立资源访问模式的偏离预测应用程序104中可能的错误条件的例程200。例程200可以由在计算机102上虚拟应用环境106 中执行的虚拟化层116和/或在计算机上或在集中应用服务器上执行的其它模块的组合来执行。可以明白,例程200也可由在其它计算设备上执行的其它模块或组件执行,或者由模块、组件和计算设备的任何组合来执行。例程200在操作202开始,其中虚拟化层116监视在虚拟应用环境106中执行的应用程序104对本地和远程资源118的访问,并将这些访问记录到资源访问日志124。如以上参照图1所述,虚拟化层116可以记录应用程序104对资源API 120的调用的细节作为资源访问事件126,包括指示资源访问何时发生的时间戳、所调用的各个资源API的标识符、以及指示正被访问的本地或远程资源118的资源类型、位置或其它方面的多个参数值。从操作202,例程200前进到操作204,其中建立资源访问模式128。应该明白,在某一时段上,大量资源访问事件126可被虚拟化层116记录在资源访问日志124中。如上参照图1所述,虚拟化层116或一些其它模块或进程可以利用所记录的资源访问事件1 建立资源访问模式128。例如,虚拟化层116可以利用诸如贝叶斯网络之类的模式识别技术来建立两个或更多资源访问事件之间的相对发生概率。所建立的资源访问模式1 随后可以作为马尔可夫链或概率树被存储在资源访问日志124中。资源访问模式1 可由虚拟化层116在计算机102上近乎实时地生成。或者,所记录的资源访问事件1 可以从多个计算机102聚集到中央位置,被泛化并用于在跨各个计算机的虚拟应用环境106中执行的应用程序104的多个实例上建立资源访问模式128。 从所聚集的资源访问事件1 建立的一般资源访问模式1 随后可以用于通过本文所述的方式预测执行应用程序104的任何计算机102上的错误条件。例程从操作204前进到操作206,其中虚拟化层116检测到在虚拟应用环境106中执行的应用程序104从所建立的资源访问模式1 的偏离。例如,虚拟化层116可以基于资源访问模式128的贝叶斯分析,检测发生概率低于指定阈值的资源API调用的序列。类似地,虚拟化层116可以检测具有如资源访问模式128中所建立的带有已知错误条件的高发生概率的资源API调用的序列。在一个实施例中,如果资源API调用的序列的概率不落在指定阈值之下,虚拟化层116记录相应的资源访问事件126,使得可以在如上所述的后台进程中用新概率来更新资源访问模式128。这样,应用程序104在虚拟应用环境106中执行期间,资源访问模式1 可以得到持续的更新。如果检测到应用程序104从所建立的资源访问模式1 偏离,例程200从操作206 前进到操作208,其中虚拟化层116发出关于模式偏离的警报。该警报可被引导到应用程序104的用户或管理员。该警报可以经由电子邮件、文本消息、或系统消息队列发送;作为系统级事件发出;被记录在应用或系统事件日志中;或者以其它方式经由计算机102可访问的消息系统发送给管理员。这种抢先警报可以向管理员给予快速采取诊断或校正动作的机会,从而减少或可能防止紧随可能的、即将发生的错误条件之后的停工期和数据丢失。从操作208,例程200结束。图3示出根据本文所述实施例的用于将资源访问事件126与应用程序104中已知错误条件相关联以允许错误诊断的例程300。例程300可以由在计算机102上虚拟应用环境106中执行的虚拟化层116和/或在计算机上或在集中应用服务器上执行的其它模块的组合来执行。可以明白,例程300也可由在其它计算设备上执行的其它模块或组件执行,或者由模块、组件和计算设备的任何组合来执行。例程300在操作302开始,其中通过以上针对操作202所述的方式,虚拟化层116 监视在虚拟应用环境106中执行的应用程序104对本地和远程资源118的访问,并将这些访问记录到资源访问日志1 中。例程300前进到操作304,其中应用程序104中的错误条件被检测到。例如,可以由应用的用户或管理员通过常规手段(诸如弹出式错误对话框、记录在应用或系统事件日志中的事件等)在应用程序104中检测到错误条件。从操作304,例程300前进到操作306,其中将资源访问日志124中的资源访问事件1 与检测到的错误条件相关联。管理员可以提供错误条件的发生时间,或者错误条件的发生时间可以从记录在资源访问事件126中的对资源API 120的特定调用来标识。虚拟化层116或其它模块然后可以标识资源访问日志IM中在错误条件发生时间的一时间接近度内的资源访问事件126的子集。例如,可以将在错误条件之前10秒窗口内发生的所有资源访问事件126与该错误条件相关联。在一个实施例中,仅将在错误条件的一时间接近度内从所建立的资源访问模式 128偏离的资源访问事件126中记录的资源API调用的序列与错误条件相关联。例如,虚拟化层116或其它模块可以基于对资源访问日志124中资源访问模式128的贝叶斯分析, 标识在错误条件发生时间10秒内、发生概率低于指定阈值的资源访问事件1 中记录的资源API调用的序列。应该明白,用于将资源访问模式128中的偏离与错误条件相关联的指定概率阈值可以高于如上针对操作206所述的用于基于资源访问模式中的偏离来预测错误条件的概率阈值。例程从操作306前进到操作308,其中向应用程序104的用户或管理员示出与错误条件相关联的资源访问事件126。所关联的资源访问事件1 可以通过用户界面对话框示出或者在经由电子邮件、文本消息、系统消息序列等发送的报告中示出。从资源访问日志 124提供在时间上与特定错误条件相关联的资源访问事件1 可以允许用户或管理员快速诊断错误条件的起因并且实现适当的恢复动作以便减少停工期和数据丢失。从操作308,例程300结束。图4示出根据本文所述实施例的用于从应用程序104中的错误条件恢复的例程 400。例程400可以由在计算机102上虚拟应用环境106中执行的虚拟化层116和/或在计算机上或在集中应用服务器上执行的其它模块的组合来执行。可以明白,例程400也可由在其它计算设备上执行的其它模块或组件执行,或者由模块、组件和计算设备的任何组合来执行。例程400在操作402开始,其中通过以上针对操作202所述的方式,虚拟化层116 监视在虚拟应用环境106中执行的应用程序104对本地和远程资源118的访问,并将这些访问记录到资源访问日志124。此外,如以上参照图1所述,虚拟化层116对于应用程序104 对添加、修改或删除数据的的资源API120的调用,记录资源写入数据130。资源写入数据 130可以包括来自API调用中指定的指针或结构-类型参数的深副本,并且可以使用执行应用程序104的当前上下文对该数据进一步处理以泛化资源写入数据130中的文件名、键名、 地址、或其它位置参数。从操作402,例程400前进到操作404,其中应用程序104因错误条件而发生故障。 例如,应用程序可能由于软件隐错(bug)、用户错误、不正确的输入数据、不可用资源、计算机102中的硬件故障等而发生故障。在应用程序104故障时,例程400移动到操作406,其中应用程序104重启。应用程序104可以由虚拟化层116或在计算机102上执行的另一模块自动重启,或者它可以由相同计算机或具有类似配置的另一计算机系统上的系统管理员手动重启。例程从操作406前进到操作408,其中在计算机102上虚拟应用环境106(其中重启应用程序104)中执行的虚拟化层116重放记录在资源访问日志124中的特定资源访问事件126,以便将应用状态还原到故障发生之前的点。例如,虚拟化层116可以重放与对写入到诸如系统存储器地址、I/O缓冲器、高速缓存文件等的非易失性或高速缓存存储位置的资源API 120的调用相对应的所有资源访问事件126。在另一实施例中,虚拟化层116可以重放与自应用故障之前由虚拟化层和/或应用程序104采取并存储应用状态的最后快照或“检查点”以来发生的数据写入相对应的所有资源访问事件126。虚拟化层116可以利用资源访问日志IM中的资源写入数据130来重放所选资源访问事件126,以便于确保在还原应用状态时写入正确数据。记录添加、修改或删除数据的资源访问事件126以及相应的资源写入数据130以便重放写入来还原应用状态,可以允许从应用故障更快恢复,从而减少应用停工期。从操作408,例程400结束。虽然在虚拟化应用环境106的上下文中描述本公开,但是应该明白,本文所呈现的用于区分应用程序的正常操作与错误条件以预测、诊断应用故障并从其恢复的方法可以在其中可以监视应用程序104对本地和远程资源118的访问的任何其它应用环境中实现。 例如,与虚拟化层116类似的模块可被实现成利用本领域已知方法来勾连由操作系统122 实现的资源API 120,以便监视由在虚拟应用环境106外的本地执行的应用程序104对本地和远程资源118的请求。该模块可记录对资源的访问并且建立应用程序104的资源使用的公共模式。一旦这种资源访问模式被建立,该模块可以通过本文所述的方式继续监视应用程序104对资源的使用并在模式改变时提供警告或警报。图5示出计算机500的示例计算机体系结构,该计算机能够执行本文所述的用于通过以上呈现的方式区分应用程序的正常操作与错误条件相以预测、诊断应用故障并从其恢复的软件组件。图5所示的计算机体系结构示出常规服务器计算机、台式计算机、膝上型计算机、笔记本计算机、PDA、无线电话或其它计算设备,并可以用来执行本文呈现的被描述为在计算设备102或其它计算设备上执行的软件组件的任何方面。图5所示的计算机体系结构包括一个或多个中央处理单元(“CPU”) 502。CPU 502 可以是执行计算机500的操作所需的算术和逻辑操作的标准处理器。CPU 502通过从一个分立的物理状态转换到下一状态来执行必要的操作,该转换是通过操纵在各状态之间进行区别并改变这些状态的切换元件来实现的。切换元件一般可包括维持两个二进制状态之一的电子电路,诸如触发电路,以及基于一个或多个其它切换元件的状态的逻辑组合来提供输出状态的电子电路,诸如逻辑门。这些基本切换元件可被组合以创建更复杂的逻辑电路, 包括寄存器、加减器、算术逻辑单元、浮点单元和其它逻辑元件。该计算机体系结构还包括含有随机存取存储器(“RAM”)514和只读存储器 516( “ROM”)的系统存储器508、以及将存储器耦合至CPU 502的系统总线504。基本输入 /输出系统被存储在ROM 516中,该系统包含帮助诸如在启动期间在计算机500中的元件之间传递信息的基本例程。计算机500还包括用于存储操作系统122、应用程序和其它程序模块的大容量存储设备510,这将在本文中更为详尽地描述。大容量存储设备510通过连接至总线504的大容量存储控制器(未示出)连接到 CPU 502。大容量存储设备510为计算机500提供非易失性存储。计算机500可通过变换大容量存储设备510的物理状态来反映被存储的信息来将信息存储在该设备上。在本说明书的不同实现中,物理状态的具体变换可取决于各种因素。这些因素的示例可以包括,但不仅限于用于实现大容量存储设备的技术,大容量存储设备被表征为主存储还是辅存储等等。例如,计算机500可通过向大容量存储控制器发出以下指令来将信息存储到大容量存储设备510 变更磁盘驱动器内的特定位置的磁特性;变更光存储设备中的特定位置的反射或折射特性;或变更固态存储设备中的特定电容、晶体管或其它分立元件的电特性。 在不背离本发明的范围和精神的情况下,物理介质的其它变换是可能的。计算机500还可通过检测大容量存储设备内的一个或多个特定位置的物理状态或特性来从大容量存储设备510读取信息。如上简述,多个程序模块和数据文件可存储在计算机500的大容量存储设备510 和RAM 514中,包括适用于控制计算机的操作的操作系统518。大容量存储设备510和RAM 514还可存储一个或多个程序模块。具体而言,大容量存储设备510和RAM 514可存储虚拟化层116,这曾在上文中参照图1更详细地描述过。大容量存储设备510和RAM 514还可存储其它类型的程序模块或数据。除了上述大容量存储设备510之外,计算机500能够访问其它计算机可读介质以存储和检索信息,诸如程序模块、数据结构或其它数据。本领域技术人员应该明白,计算机可读介质可以是计算机500可访问的任何可用介质,包括计算机可读存储介质和通信介质。通信介质包括瞬时信号。计算机可读存储介质包括以存储如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括但不限于,RAM、R0M、EPR0M、EEPR0M、闪存或其它固态存储器技术,⑶-ROM、数字多功能盘(DVD)、HD-DVD、蓝光、或其它光学存储、磁带盒、 磁带、磁盘存储或其它磁存储设备,或可以用来存储所需信息并可由计算机500访问的任何其它介质。计算机可读存储介质可以用在被加载到计算机500中时可将计算机系统从通用计算系统变换成能够实现本文描述的实施例的专用计算机的计算机可执行指令来编码。计算机可执行指令可通过变更计算机可读存储介质中的特定位置的电、光、磁或其它物理特性来在该介质上编码。这些计算机可执行指令通过如上所述地指定CPU 502如何在各状态之间转换来变换计算机500。根据一个实施例,计算机500可以访问存储计算机可执行指令的计算机可读存储介质,当由计算机执行时,该指令执行如上参照图2-4所述的用于将应用程序的正常操作与错误条件相区别以预测、诊断应用故障并重启恢复的例程200、300和 / 或 400。根据各种实施例,计算机500可使用通过网络110到远程计算设备和计算机系统的逻辑连接在联网环境中操作,所述网络诸如LAN、WAN、因特网或本领域已知的任何拓扑结构的网络。计算机500可以通过连接到总线504的网络接口单元506连接到网络110。应当理解,网络接口单元506还可以被用来连接到其它类型的网络和远程计算机系统。计算机500还可包括用于接收和处理来自包括键盘、鼠标、触摸垫、触摸屏、电子指示笔、或其它类型的输入设备等多个输入设备的输入的输入/输出控制器512。类似地, 输入/输出控制器512可向诸如计算机监视器、平板显示器、数字投影仪、打印机、绘图仪或其它类型的输出设备等显示设备提供输出。可以明白,计算机500可以不包括图5所示的全部组件,可以包括未在图5中明确示出的其它组件,或者可使用完全不同于图5所示的体系结构。基于上文,应该明白,本文提供用于将应用程序的正常操作与错误条件相区别以预测、诊断应用故障并从其恢复的技术。虽然以计算机结构特征、方法动作、以及计算机可读存储介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对本文所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。
权利要求
1.一种用于预测应用程序(104)中可能的错误条件的计算机实现方法,所述方法包括在一个或多个计算机(10 上执行指令以执行以下操作记录由所述应用程序(104)发起的资源访问事件(126); 从所记录的资源访问事件(126)建立资源访问模式(128); 检测由所述应用程序(104)从所建立的资源访问模式(128)的偏离;以及基于所检测的偏离,向所述应用程序(104)的用户或管理员警报可能的错误条件。
2.如权利要求1所述的计算机实现方法,其特征在于,还包括记录来自在由所述应用程序对用于添加、修改或删除数据的资源API的调用中指定的参数值的数据。
3.如权利要求2所述的计算机实现方法,其特征在于,还包括利用所记录的、来自在对所述资源API的调用中指定的参数值的数据,来重放用于添加、修改或删除数据的相应资源访问事件,以便在应用故障之后还原所述应用程序的应用状态。
4.如权利要求1所述的计算机实现方法,其特征在于,所述资源访问模式是使用贝叶斯学习技术从所记录的资源访问事件建立的。
5.如权利要求4所述的计算机实现方法,其特征在于,所述资源访问模式被存储为指示所述资源访问事件之间的相对发生概率的马尔可夫链或概率树。
6.如权利要求4所述的计算机实现方法,其特征在于,检测从所建立的资源访问模式的偏离包括基于对所述资源访问模式的贝叶斯分析,检测发生概率低于指定阈值概率的资源访问事件的序列。
7.如权利要求4所述的计算机实现方法,其特征在于,基于对检测到的所述应用程序的错误条件发生时间的一时间接近度,将基于对所述资源访问模式的贝叶斯分析而发生概率低于阈值概率的资源访问事件的序列与所述错误条件相关联。
8.一种用计算机可执行指令编码的计算机可读存储介质,所述指令在由计算机(102) 执行时使得所述计算机(10 执行以下动作监视由在所述计算机(102)上执行的应用程序(104)对资源(118)的访问; 将由所述应用程序(104)发起的资源访问事件(126)记录到资源访问日志(124); 使用计算机模式识别技术从所记录的资源访问事件(126)建立资源访问模式(1 ); 检测所述应用程序从所建立的资源访问模式的偏离;以及基于所检测的偏离,向所述应用程序的用户或管理员警报可能的错误条件。
9.如权利要求8所述的计算机可读存储介质,其特征在于,进一步用使计算机进行如下动作的计算机可执行指令编码检测所述应用程序中的错误条件; 确定所述错误条件的发生时间;基于对所述错误条件的发生时间的时间接近度,关联所述资源访问日志中所记录的资源访问事件的一个或多个;以及向所述应用程序的用户或管理员显示所述一个或多个已关联的资源访问事件。
10.如权利要求8所述的计算机可读存储介质,其特征在于,所述一个或多个已关联的资源访问事件包括基于对所建立的资源访问模式的贝叶斯分析而发生概率低于阈值概率的资源访问事件的序列。
全文摘要
本发明涉及基于资源访问模式预测、诊断应用故障并从其恢复。本文描述了用于区分应用程序的正常操作与错误条件以预测、诊断应用故障并从其恢复的技术。监视应用程序对资源的访问,并且记录资源访问事件。利用计算机模式识别技术,从所记录的资源访问事件建立资源访问模式。如果应用程序对资源的后续访问偏离所建立的模式,则基于检测到的偏离向应用程序的用户和/或管理员通知可能错误条件。此外,可以基于对错误的发生时间的时间接近度,将从所建立的资源访问模式偏离的资源访问事件的序列与错误条件相关联,以提供关于错误的诊断信息。
文档编号G06F11/34GK102567181SQ20111044203
公开日2012年7月11日 申请日期2011年12月26日 优先权日2010年12月27日
发明者E·杰瓦特, K·H·雷厄森, M·D·扬 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1