首页> 中国专利> 用于在分布式企业应用中进行问题确定的方法和系统

用于在分布式企业应用中进行问题确定的方法和系统

摘要

提供了一种用于对分布式环境中的企业计算机系统(300)进行问题确定的方法、系统和计算机程序。在该方法中,获取有关企业应用的信息,并且向用户(325)显示高级别信息,其中向用户提供一个或多个对更详细信息的提示。响应来自用户的对有关应用的更详细信息的请求,将更详细信息提供给用户。有关应用的更详细信息的若干级别包括关于单独线程的信息是可用的。该方法还包括以下步骤:从管理员(320)接收建立用户帐户的指令;将一个或多个服务器与该帐户相关联;以及仅向对应用户提供对关联服务器的访问。在该方法中,可对字符串和请求执行搜索,并且可通过各种标准对识别出的字符串和请求进行排序。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-25

    专利权有效期届满 IPC(主分类):G06F 9/44 专利号:ZL038101114 申请日:20030408 授权公告日:20080312

    专利权的终止

  • 2008-03-12

    授权

    授权

  • 2005-09-28

    实质审查的生效

    实质审查的生效

  • 2005-08-03

    公开

    公开

说明书

技术领域

本发明涉及计算机软件,特别涉及分布式企业应用。

背景技术

直到最近,各公司对其商务都是考虑基于诸如Unix和Windows NT的操作系统的中间层平台,其对于托管关键性任务应用太脆弱。随着太阳微系统公司引入Java(R)以及广泛使用因特网开展商务,情形发生了变化。各公司现在使用基于太阳微系统Java 2企业版(J2EE)的技术并且在中间层平台上构建关键性商务应用。该应用通常运行于分布式计算环境中,其中服务器群具有很多CPU。

由于很多公司使用因特网与其客户开展商务,因此关键性商务应用现在通过最终用户的浏览器暴露于最终用户。这些在线应用的任何停工期或问题产生巨大的直接和间接机会成本。一个分析家说过网站必须在八秒内响应,否则用户将转而投向竞争者的网站。通过一项估算,仅由于停工期或慢速站点在美国每年就丢失大约43.5亿美元的在线销售。

各种系统管理工具可用于监视一起构成关键性任务商务应用基础设施的网络、数据库、存储设备和平台的性能。这些工具无疑是有必要的,并且存在发挥其作用的位置;然而,应用连接所有这些资源,并且正是应用性能直接影响客户。应用驱动网络通信、数据库使用和平台工作负载。因此,大部分因特网网站故障(outrage)是应用相关的,并且现有系统管理工具不能提供有关应用是如何运转的任何洞察。当前现有应用管理系统主要集中于应用服务器功能而非应用。

由于很多应用在万维网(web)上每天二十四小时都直接暴露于客户,因此施加了严格的可用性和性能要求。目前,数据中心典型地通过回收出故障的应用服务器来解决服务器问题。不幸的是,由于错误几乎总是重现,因此回收典型地只是临时解决方案。不能找出更好的解决方案是由于缺乏产品类非侵入工具来对中间层平台上出故障的系统和应用进行服务和故障排除。

另一个应用管理问题是由于通过服务产品工作负载而产生的问题。开发活动和产品服务活动之间的清楚分工是企业IT组织中的准则。然而,数据中心操作与系统开发活动之间存在较大的分离。目前缺乏允许管理员可视化运行在应用服务器内的工作负载的非侵入工具。从产品服务部门传到开发部门的没有任何J2EE上下文的诊断处于太低级别而不能为开发者提供任何问题解决启示。

任何应用级跟踪固有地涉及高开销,并且由于该原因而对于高容量系统是不可接受的。各种组件需要被监视以用于诊断的目的,其包括小服务程序(servlet)、JSP、企业版Java组件(Java bean)、对象、方法、SQL、会话和上下文。分布式服务器是间歇性问题的主要来源。

当前应用管理产品提供不是最优的功能来以实时方式处理多个分布式应用。虽然应用被集成在一起,但是大多数当前系统管理产品仍然查看分立的组件。该方法使应用故障排除变得困难,并且从根本上使分析变得几乎不可能。

总而言之,在J2EE应用服务器群中可能发生各种问题,这将妨碍电子商务应用的性能。这些问题中的最常见问题是循环、缓慢处理、挂起情形、停止情形、异常发生、间歇性问题、死锁、超时、API相关问题以及内存泄漏。现有环境和故障排除监视器不可用于分布式环境中的应用服务器。

发明内容

一种用于对运行在分布式环境中的企业应用进行问题确定的方法,包括以下步骤:获取有关企业应用的信息;向用户显示从所获得的信息中选择的高级别信息,包括多个信息项;向用户提供一个或多个对更详细信息的提示;响应这些提示之一从用户接收对更详细信息的请求;以及响应该请求将更详细信息提供给用户。

一种用于对运行在分布式环境中的多个服务器上的企业应用进行问题确定的方法,包括以下步骤:从管理员接收建立用户帐户的指令;将一个或多个服务器与该帐户相关联;以及仅向对应用户提供对关联服务器的访问。

一种用于对运行在分布式环境中的企业应用进行问题确定和排除的方法,包括以下步骤:识别运行在分布式环境中的线程;向用户提示执行线程软杀死的选项;以及响应执行软杀死的命令,添加导致抛出异常使得请求被取消的代码。

一种用于对运行在分布式环境中的企业应用进行问题确定的方法,包括以下步骤:提示用户选择应用服务器和搜索字符串;在万维网请求的所有活动URL字符串和远程企业版java组件请求的活动类名中搜索该搜索字符串的出现;以及显示所识别的字符串和请求。

一种用于对运行在分布式环境中的企业应用进行问题确定的方法,包括以下步骤:提示用户输入不要被监视的应用的类名的排除列表;提示用户输入要被监视的类名的排除忽略列表;以及当接收到所请求信息时,监视与标识在排除列表中且不包括在排除忽略列表中的那些类不同的所有类。

一种用于对运行在分布式环境中的企业应用进行问题确定的方法,包括以下步骤:监视运行在分布式环境中的服务器上的应用的基于活动的可用性;以及根据基于活动的可用性向用户显示服务器是否可用的指示。该方法可包括监视可归因于正被监视应用的CPU使用增量、吞吐量增量以及内存使用增量中的一项或多项。如果这些值中的任一项低于阈值,则认为服务器不可用,而不管硬件可用性。

一种用于对运行在分布式环境中的企业应用进行问题确定的系统,包括被配置用于执行以下操作的计算机硬件:获取有关企业应用的信息;向用户显示高级别信息;向用户提供一个或多个对更详细信息的提示;响应这些提示之一从用户接收对更详细信息的请求;以及响应该请求将更详细信息提供给用户。

一种用于对运行在分布式环境中的多个服务器上的企业应用进行问题确定的系统,包括被配置用于执行以下操作的计算机硬件:从管理员接收建立用户帐户的指令;将一个或多个服务器与该帐户相关联;以及仅向对应用户提供对关联服务器的访问。

一种用于对运行在分布式环境中的企业应用进行问题确定和排除的系统,包括被配置用于执行以下操作的计算机硬件:识别运行在分布式环境中的线程;向用户提示执行线程软杀死的选项;以及响应执行软杀死的命令,添加导致抛出异常使得请求被取消的代码。

一种用于对运行在分布式环境中的企业应用进行问题确定的系统,包括被配置用于执行以下操作的计算机硬件:接收应用服务器和搜索字符串的选择;在万维网请求的所有活动URL字符串和远程企业版java组件请求的活动类名中搜索该搜索字符串的出现;以及显示所识别的字符串和请求。

一种用于对运行在分布式环境中的企业应用进行问题确定的系统,包括被配置用于执行以下操作的计算机硬件:提示用户输入不要被监视的应用的类名的排除列表;提示用户输入要被监视的类名的排除忽略列表;以及当接收到所请求信息时,监视与标识在排除列表中且不包括在排除忽略列表中的那些类不同的所有类。

一种用于对运行在分布式环境中的企业应用进行问题确定的系统,包括被配置用于执行以下操作的计算机硬件:监视运行在分布式环境中的服务器上的应用的基于活动的可用性;以及根据基于活动的可用性向用户显示服务器是否可用的指示。该计算机硬件可被配置用于监视可归因于正被监视应用的CPU使用增量、吞吐量增量以及内存使用增量中的一项或多项。如果这些值中的任一项低于阈值,则认为服务器不可用,而不管硬件可用性。

一种用于对运行在分布式环境中的企业应用进行问题确定的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:以可访问于用户的格式显示从所获得的信息中选择的高级别信息,包括多个信息项;向用户提供一个或多个用来请求相对于这些信息项中的一项或多项的更详细信息的提示;响应所述提示之一从用户接收对关于所述信息项中的一项或多项的更详细信息的请求;以及响应该请求将所请求的更详细信息提供给用户。

一种用于对运行在分布式环境中的多个服务器上的企业应用进行问题确定的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:从管理员接收建立用户帐户的指令;将一个或多个服务器与该帐户相关联;以及仅向对应用户提供对关联服务器的访问。

一种用于对运行在分布式环境中的企业应用进行问题确定和排除的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:识别运行在该环境中的线程;向用户提供执行线程软杀死的选项;以及响应执行软杀死的命令,添加导致抛出异常使得线程被取消的代码。

一种用于对运行在分布式环境中的企业应用进行问题确定的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:提示用户选择应用服务器和搜索查询;响应搜索查询,在万维网请求的所有活动URL字符串和远程企业版java组件请求的活动类名中进行搜索;以及显示所识别的字符串和请求。

一种用于对运行在分布式环境中的企业应用进行问题确定的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:提示用户输入不要被监视的应用的类名的排除列表;提示用户输入要被监视的类名的排除忽略列表;以及当接收到定义排除列表中的类名子集的排除忽略列表时,监视与标识在排除列表中且未标识在排除忽略列表中的类不同的所有类。

一种用于对运行在分布式环境中的企业应用进行问题确定的计算机程序,由存储在介质上的指令构成,其中这些指令在处理器上执行时使处理器执行以下步骤:监视运行在服务器上的应用的基于活动的可用性;以及根据基于活动的可用性向用户显示服务器是否可用的指示。

附图说明

图1A、1B、1C和1D是示出根据本发明的示例性处理流程的处理流程图。

图2是示出根据本发明的示例性处理流程的处理流程图。

图3是本发明特征的示意图示。

图4是示出根据本发明的示例性处理流程的处理流程图。

图5-24是根据本发明的用户界面中的示例性屏幕。

图25是本发明系统的示例性架构的示意图示。

图26是根据本发明的系统的示例性架构的示意图。

图27是示出本发明系统的一组件的示例性架构的流程图。

图28是根据本发明的系统的一组件的示例性架构的示意图。

图29是根据本发明的系统的一组件的示例性架构的示意图。

图30是示出本发明系统的一组件的示例性架构的流程图。

具体实施方式

在本发明的方法和系统中,提供了一种方法来向用户提供有关服务器和系统的操作的信息。该方法特别适用于运行基于java编程系统的系统的企业服务器。该方法也特别适用于在多个服务器上运行多个客户端-服务器应用的系统。

在本发明的方法中,用户典型地是被要求调查用户问题报告的信息技术部门代表。该过程称作问题确定。可能遇到各种不同类型的问题,包括服务器对客户端的不可用性、客户端请求的缓慢处理、在客户端提交请求之后没有响应以及其他问题。在该方法的初始步骤,用户登录,并且被显示向用户提供信息的用户界面。响应初始用户请求向用户显示的信息处于高级别。该信息顶级由于提供有关应用服务器组的信息也称作应用服务器组级别。本发明的计算机系统选择了该高级别信息以显示给用户。该信息可被理解为包含多个信息项。所提供的信息包含运行用户有权查看的选定应用的服务器的实时或最近性能信息,例如上一分钟、或上五分钟、或上一小时。用户被提供一个或多个关于可被提供的详细信息的选项。具体地说,选项或提示用来获得关于所显示信息项中的一项或多项的更详细信息。用户选择这些信息项中的一项或多项以显示更详细的信息。响应接收到该用户请求,以更详细的级别提供关于该一个或多个显示项的信息。用户可以例如通过鼠标单击超链接来完成此。例如,信息项的特征如服务器名可加上超链接。可提供请求信息的更详细级别的很多其他方式。显示用于更详细信息的选项可被理解为允许用户深入探究以获得更详细的级别。

提供关于应用而非硬件或操作系统功能的信息。在顶级提供的信息包括直接影响客户端的信息。例如,客户端查看请求或事务的处理。在顶级提供的信息最好包括关于在最近短时间周期中处理的事务数的信息。该信息可以逐一地基于应用服务器,以及针对应用服务器组。为了用户参考起见,可采用较近时间周期提供相同信息,以便用户可查看已处理事务或请求数的趋势。其他可用信息包括处理请求或事务的时间的统计信息例如平均值。该信息可逐服务器地提供,以便隔离影响一个服务器的问题。通过提供特定于应用的信息,用户可较快地通过判断来确定问题是否涉及该应用,以及问题存在于应用的何处。然后,用户可使用现有工具而不是本发明方法的一部分来解决问题。可选地,用于解决特定类型问题的工具可加入到实现本发明方法的计算机程序和系统中。

显示应用信息

现在将以所提供信息的一系列级别为例说明本发明的方法。应当理解,诸如级别数、在每个级别提供的信息以及显示类型的设计特征可在本发明方法的范围内变化。在本例中,最高级别是应用服务器组级别或者应用概览页。一个示例性处理流程将参照图1进行讨论。如块100所示,用户初始登录。在用户登录时,该方法使应用服务器组或应用概览页被显示,如块105所示。示例性应用概览页500如图5所示。在应用服务器组级别,可向用户提供下面信息。如框505所示,表示每个服务器是否可用。系统所采用的可用和不可用定义是指运行在服务器上的应用软件的可用性。通过监视由应用处理的请求,测量可用性或不可用性。可用性或不可用性最好不通过硬件可用性或不可用性,或者通过发送哑请求到软件来确定。为便于查看起见,可采用图形方式提供该信息。可用服务器与总服务器之比可采用百分比表示,如框510所示。在相同显示中,提供关于每个服务器组上的应用吞吐量的信息,如515所示。最好,提供关于一个或多个最近时间周期上的已完成请求数的信息。在一个优选实施例中,如520所示,提供了关于选定数目的最近时间间隔上的已完成请求数的信息。在一个优选实施例中,提供了多个最近时间周期如十二个最近五分钟间隔上的已完成请求数,如框515所示。每个间隔中的已完成请求数可采用图形方式显示以便于检查。顶级或应用服务器组显示还可提供已完成请求的总数。通过查看该概览,用户将获得有用信息。例如,如果服务器降慢或停止提供已完成请求,这将立即显示出来。如果已完成请求的数量例如由于大量用户请求而逐渐增大,则这将是立即可见的。吞吐量信息的图形显示将允许趋势快速地可见于用户。

从顶级显示或应用概览页,向用户显示至少一个用于激活显示有关所显示应用的更详细信息的装置。可提供超链接文本,如图5的525所示。在本发明的方法中,接收用户输入。如果如判定块120所示请求的性质是对有关单个应用的更详细信息的请求,则提供有关所选应用的附加信息。如果请求为另一类型,则执行所请求功能。在顶级是应用组级别的例子中,下一个更详细的显示级别将称作应用服务器组级别或服务器可用性详情页,如块125所示。应用服务器组级别或服务器可用性详情页的例子作为600如图6所示。在应用服务器组级别,逐服务器地提供有关一个选定应用的信息,如图6的服务器605、610所示。从应用组级别显示,存在与每个所显示的应用相关联的至少一个选择。该选择可以是提供有关运行应用的每个服务器或java虚拟机(JVM)的附加详情,如图6所示。显示关于每个服务器的选定信息。该信息应当标识服务器,并且包括表示CPU使用和内存使用至少之一的信息。在一个例子中,该信息包括服务器名,并且可包括下列项中的一项或多项:服务器IP地址、服务器启动时间、服务器累计正常运行时间、JVM CPU使用增量、服务器总CPU、JVM CPU时间(累计)、JVM CPU使用、JVM内存使用、自从前一次刷新以来的JVM内存增量、已完成请求的总数以及已完成请求的增加数目。该信息可采用图形方式、数值方式或两者显示。应用服务器组级别信息的检查可立即向用户指示问题源。例如,一个服务器的CPU使用非常高将表示用户需要进一步调查那个服务器的操作。一些服务器的已完成请求数低将表示需要调查那些特定服务器。如果所有服务器在此级别具有非常类似的信息,则用户将知道查找系统中的别处以定位问题源。

从应用组服务器级别,下一个详细级别是应用服务器级别。应用服务器级别的显示可称作应用活动显示。从可用性管理器显示或者应用组服务器视图,最好存在可用来移动到与每个所显示服务器相关联的应用服务器级别的选择。在该方法中,接收用户输入,如块130所示。如果用户输入的性质是对与选定服务器相关的附加信息的请求,如判定块135所示,则将显示应用服务器级别信息,如块140所示。如果用户输入不是对与选定服务器相关的附加信息的请求,则执行所请求的功能。应用服务器级别将提供关于在特定时间点由那个服务器执行的每一个线程的信息,例如,如图7中的屏幕所示。这是逐线程的信息显示,每行705提供有关单个线程的信息。时间点是最近的,并且可以是可用于系统的最近信息。有关线程所显示的信息至少包括线程标识信息,例如列710的客户端请求,以及与线程执行速度和由线程使用系统资源相关的信息。与执行速度相关的该信息可包括客户端请求时间、如列715所示的常驻时间、如列720所示的累计CPU时间、以及如列725所示的空闲时间。通过查看与执行速度相关的该信息,用户可能能够立即查看一个或多个线程不正在执行。与系统资源的使用相关的信息可包括累计CPU时间。关于系统资源使用的信息可以有用于识别正在循环或者由于某其他原因阻止其他线程访问系统资源的线程。还可以提供如列730所示的关于正被线程执行的当前方法的信息、如列735所示的客户端请求开始时间、以及如列740所示的线程状态。

可以提供过滤来显示所选以显示的线程数。过滤具有与线程属性相关的特定标准。如图1B中的判定块145和块150所示,如果过滤被激活,则显示满足过滤标准的那些线程。过滤可将显示限制于满足处理速度类别或系统资源使用类别中的一个或多个选定类型的阈值标准的那些线程。例如,过滤可被配置成仅选择具有高于特定阈值的驻留时间的那些线程。具有高驻留时间的线程很有可能被客户端感觉为产生慢响应。作为进一步例子,可仅显示累计了大于CPU时间阈值量的那些线程。该信息可允许用户识别可能正在循环或者干扰其他线程处理的那些线程。作为例子,可提供可用过滤的下拉式菜单,如750所示,并且用户可通过使用如755所示的单选按钮来请求过滤的应用。

所提供的信息页的性质也可以是请求类型,例如请求名称、线程类型和类名。该请求性质信息的显示可使用户能够识别不同于其他请求而处理的请求类。例如,金融服务公司可允许客户端通过其网站查看帐户信息和发起交易。如果交易花费过长的时间周期来完成,但是查看帐户信息的请求被迅速处理,则请求性质信息将表示该不同。所显示的线程信息还可包括关于当前正由线程执行的方法的信息。该当前方法信息可允许用户识别花费过长时间来完成的方法。

从应用活动显示,用户可选择查看有关特定线程的更详细信息。如块155所示接收来自用户的输入,并且在块160示出相关判定块。如果请求不是针对关于一个线程的信息,则执行所请求的功能。参照图1C,如块165所示,提供关于所选线程的应用线程视图。在一个例子中,该信息将称作应用线程视图或请求详情页,并且如图8中的800所示。附加详细信息可包括上述元素中的一个或多个、以及适当的SQL语句。最好,可从该页请求包括会话对象、请求对象和堆栈跟踪的附加信息。

可提供工具来在确定之后解决问题。例如,问题确定可导致识别正在循环的特定线程。详情显示如显示800可包括一个或多个按钮或链接来激活一个或多个工具或操作。除了其他显示信息之外,还可提供这些工具或操作。在一个例子中,向用户提供可对线程执行的多个操作。这些操作可包括改变线程优先级,如下拉式菜单805所示,改变线程状态,如下拉式菜单810所示,通过软杀死或硬杀死来终止线程,或者获得附加信息如方法跟踪。软杀死可通过如815所示的单选按钮来获得。硬杀死可通过如820所示的单选按钮来获得。方法跟踪请求可被提供为例如菜单825中的多个菜单项之一。线程的软杀死可通过添加导致抛出异常使得线程被取消的代码来完成。这可以通过探测/发布引擎(下面所述)中的JVMPI接口来实时完成。软杀死优于硬杀死,因为线程的硬杀死可能导致需要重启JVM。在一个例子中,可鉴定用户输入以确定是否请求了操作,如图1的块180所示。如果请求了操作,则处理流程可以可选地连续检查用户输入是否为各种操作请求。该处理流程可以检查线程优先级改变请求,如块185所示,并且如果请求了改变则改变线程优先级,如块190所示。该处理流程可以检查线程状态改变请求,并且如果识别出该请求则实现该请求,如块191和192所示。参照图1D,该处理流程可检查软杀死请求,如块194所示。如果检测到软杀死请求,则如上所述添加代码,如块195所示。如果接收到硬杀死请求,则执行硬杀死,如块196和197所示。

进一步的详细项目是如图9中的显示900所示的堆栈跟踪。堆栈跟踪显示如905所示的方法调用列表,其中从打印堆栈跟踪的方法开始;在本例中为方法调用以“后入先出”次序的方法开始。因此,最后执行的方法如方法910在堆栈跟踪中首先显示。

如上所述,进一步的详细级别是方法跟踪显示,其例子如图10的显示1000所示。用户可通过从所请求详情页提交输入例如通过从菜单825进行选择来获得方法跟踪显示。方法跟踪显示整个执行历史,其例子按照正由线程处理的请求的方法跟踪在1005示出,并且最好也包括SQL语句。方法跟踪显示可辅助用户识别例如特定线程是否正在循环。

通过从请求详情页请求,可获得关于当前请求对象和会话对象的信息,如图11中的显示1100所示。关于当前请求的信息可包括如1105所示的请求URL、如110所示的请求对象属性。会话对象信息可包括如1115所示的会话标识、如1120所示的会话创建时间以及若有的话位于1125的会话属性。

搜索

在上面例子中,每个显示提供有关特定服务器组、服务器或线程的一个详细级别的选择。在优选实施例中,多个详细级别可以使得可用。例如,在任何级别,可以向用户提供执行搜索的选项。将参照图2阐述与搜索相关的处理流程。如块201所示,接收应用请求搜索页的用户请求。在选择该选项之后,显示应用请求搜索页,如块205所示。应用请求搜索页的例子如图12的显示1200所示。应用请求搜索页向用户提示例如通过位于1205的可用下拉式菜单来选择组以及如1210所示选择用于搜索的服务器,并且例如在窗口1215中以文本字符串的形式输入搜索项。如流程图中的210所示,从用户接收服务器指定和搜索项。在万维网请求的所有活动URL字符串和远程企业版java组件请求的活动类名中搜索文本串形式的搜索项,如块215所示。结果页将显示所有识别出的URL字符串或者活动企业版java组件请求,如流程图中的块220所示。搜索结果页的例子如图13中的显示1300所示,其中结果如1305所示。显示信息可包括如列1305所示的结果服务器名、如列1310所示的客户端请求名称、如列1315所示的开始日期和时间、如列1320所示的线程标识以及如列1325所示的总资源时间。向用户提供对这些搜索结果进行排序的能力。排序标准最好包括开始时间和总驻留时间。在图13的显示中,用户可通过选择特定列标题来采用各种标准对结果进行排序。因此,结果可采用服务器名、客户端请求、开始日期和时间以及总资源时间来排序。特别是通过开始时间和总驻留时间的排序可允许用户快速查看停止、正在循环或有问题的URL字符串和请求。如块225所示,从用户接收搜索标准。作为响应,如块230所示,显示采用所接收标准排序的字符串或请求。还可以提供建议搜索项的下拉式菜单或者其他列表。该搜索选项允许用户直接进入显示与对应于所搜索客户端请求类型的特定线程有关的信息的显示。可在任何显示屏幕上提供搜索选项。

可提供多个搜索选项。搜索策略最好可通过行为来识别事务。例如,搜索可涉及在系统中长于选定时间周期如5分钟、10分钟或15分钟的所有系统事务。可选地,可对在特定时间窗口内启动的所有事务、发出了大于SQL阈值数目(如10,000)且尚未完成的所有事务、以及发出了大于阈值(如10,000)方法且尚未完成的所有事务执行搜索。应当理解,根据用户对特定系统和应用的经验,用户能够选择参数,包括系统中的时间长度阈值和事务的数目阈值。

本发明的方法最好提供应用服务器系统资源分析器。也可选择该分析器以比较各个服务器的操作。可以在上面深入描述中的所有或任何点向用户提供选择系统资源分析器的选项。现有工具如Websphere PMI接口可用来提供信息。服务器系统资源分析器中的第一页将称作系统资源门户。系统资源门户提供关于多个不同资源如不同服务器的信息。最好,关于每个资源所提供的信息被示出为最大值的百分比,并且可采用图形方式显示。可采用如果给定资源的使用在最大值的某一预定阈值内则使用不同颜色的技术。可显示的信息包括池、内存使用、CPU使用、应用活动和深入资源信息链接。一个例子作为显示1400如图14所示。在该示例性显示中,在1404示出CPU使用,在1410示出内存使用,并且在1415示出事务故障率。在菜单1420中提供深入链接。对于企业版java组件,用户可使用菜单1420选择企业版java组件列表。从该列表,用户可选择多个企业版java组件之一。响应该选择,可显示关于选定企业版java组件的方法的大量信息显示,包括在图15的显示1500中所示的信息。除了在1505标识企业版java组件之外,还在1510显示各种方法信息。可以显示数量信息如创建方法数、删除数、激活数、抑制(passivated)数、实例化和销毁数、装载和存储数、同时活动(active)方法数、同时存活(live)方法数、方法调用数和其他信息。也可以显示统计信息,如平均创建时间和平均删除时间。关于数据库连接池,用户可从菜单1420选择关于数据库连接池的附加信息。作为响应,显示如图16的显示1600所示的数据库连接池概要页。对于在行1605中所示的每个连接池,可以显示如下信息:如列1610所示的同时等待者数目、如列1615所示的平均等待时间、如列1620所示的故障、以及如列1625所示的使用百分比。例如通过选择单独数据库连接池名称1630,可从数据库连接池概要页选择关于数据库连接池的进一步详细级别。在数据库连接池详情页如图17的显示1700显示进一步的详细级别。除了位于1705的特定数据库连接池的标识之外,显示1700还可包括在总体上如1710所示的如下信息:详细快照时间戳、所创建连接数、所销毁连接数、所返回连接数、所分配连接数、池大小和从预备语句高速缓存丢弃的数目、以及来自数据库连接池概要页的信息。

对于小服务程序和会话管理器,可从菜单1420选择小服务程序和会话管理器概要数据页。该页的例子如图18中的显示1800所示。在总体上如1810所示,该页标识所创建会话数、无效会话数、最终化(finalized)会话数、会话寿命、活动会话数和存活会话数。对于线程池,可从菜单1420选择线程池概要页。线程池概要页的例子如图19中的1900所示。线程池概要页可显示诸如行1905中的线程池列表,其最好具有详情快照时间戳、线程创建数、线程销毁数、活动线程数、池大小以及所用最大资源百分比。

如图20中的显示2000所示,可从菜单1420选择的事务管理器详情页可包括快照时间戳,以及在总体上如2010所示的以下信息:所开始全局事务数、所涉及全局事务数、所开始局部事务数、活动全局事务数、活动局部事务数、全局事务时长、全局完成之前时长、全局准备时长、全局提交时长、局部完成之前时长、局部提交时长、优化数、所提交全局事务数、所提交局部事务数、所回滚全局事务数、所回滚局部事务数、超时全局事务数以及超时局部事务数。

可从菜单1420选择万维网应用概要页。其例子如图21的显示2100所示的万维网应用概要页可显示在列2105通过名称标识的小服务程序列表,例如,其在列2110和2115中分别具有各自的总请求数和同时请求数。还可显示具有各自的总请求数和同时请求数的JSP列表。通过从万维网应用概要页单击小服务程序或JSP名称,可选择万维网应用详情页。万维网应用详情页作为显示2200在图22中示出,并且关于选定小服务程序或JSP,显示时间戳以及在总体上如2210所示的以下信息:总请求数、同时请求数、响应时间和错误数。前述信息类型的准备显示可以有用于用户识别在一个应用而非另一个应用中识别出的问题的源。

应当理解,本发明的方法可以在每个级别可获得的特定信息、信息显示方式、以及在每个级别可用于用户的深入路径有变化的情况下执行。级别数也可以在本发明的范围内变化。该方法可支持用户或管理员对级别数、在每个级别显示的信息类型以及显示方式的定制。

用户权限

本发明的方法和系统支持允许每个用户访问规定功能和应用的状态。系统管理员具有为每个单独用户创建帐户的选项。每个用户可被分配给与用户帐户相关联的一个或多个应用服务器组。每个用户将有权查看仅与系统管理员为该用户的帐户选择的应用服务器组有关的信息。每个用户可具有访问系统所需的密码。在优选实施例中,操作系统例如unix执行密码验证。如同用户向服务器组的分配一样,服务器向服务器组的分配也在系统管理员的控制之下。可创建具有重叠成员资格的不同服务器组。用户可类似地具有可变权限以在各个服务器和服务器组上查看和执行命令。

作为关于访问的例子,在图3中示出了一个简化系统。系统300具有以服务器1到10表示的十个服务器305。每个服务器305被指定给服务器组310、312、314至少之一。第一服务器组310可包括服务器1-5。第二服务器组312包括服务器1、2、6和7。第三服务器组314包括服务器8、9和10。因此,服务器组可以或可以不具有重叠成员资格。管理员320被示出具有对所有服务器组的所有权限以及改变权限系统322的权限。用户325以图形方式被示出具有可变权限以查看信息、执行目录或者根本没有权限。单个用户可具有关于第一组的第一权限以及关于第二组的第二权限。第一权限可包括仅查看信息的权限而没有执行目录的权限。第二权限可包括查看信息的权限以及执行选定命令或所有可用命令的权限。应当理解,服务器组可以或可以不重叠。可提供多于两组权限。

数据收集器的配置

在本发明的方法中,通过应用监视来收集所显示的信息。所要监视的应用可以采用本发明的方法来动态调整。应当理解,任何监视都将消耗执行服务器或组功能的系统资源。从而,例如,选择应用以作监视的能力意味着可节约系统资源来仅监视有问题的应用。选择最好可在服务器或组级别执行。参照图23,示出了未被配置的数据收集器配置页2300。在2310列出未被配置的数据收集器。该页面用来登记数据收集器的配置。可以例如通过按钮2315从该页选择缺省数据收集器配置,或者可以选择位于2320的数据收集器的名称以进行定制配置。如果收集了定制配置,则显示数据收集器配置页,如图24的显示2400所示。在框2405显示的类名过滤列表(排除)是除非列在排除忽略列表中否则将不被监视的类列表。在框2410显示的类名过滤列表(排除忽略)被提供用于输入将要被监视的排除列表中的类子集。不位于排除列表中的所有类都将被监视。仅仅排除列表中的类子集被监视。该技术允许用户选择最小必要数目的类名以进行过滤,使得不一定向监视分配那个资源。例如,排除列表可包括类“java.*”,并且排除忽略列表可包括“java.util.*”,其中,“*”表示任何扩展名。在图4的示例性处理流程中,在块405提示用户输入类。如块410所示,从用户接收所标识的一个或多个类。

示例性系统架构

本发明的问题确定系统可具有下述架构。该架构的性质是运行在每个应用服务器上的代理以及专用服务器上的其余组件,包括提供中央控制的内核、用于从探测引擎接收数据的发布服务器、用于将数据从高速缓存移动到数据库的归档代理、数据库、用于提供所有最终用户应用的可视化引擎和用于从应用服务器(如Websphere)收集某些应用服务器特定数据的应用服务器代理。一种示例性架构如图25所示。如2510所示的应用服务器代理安装在应用服务器上。探测和发布引擎2511是应用服务器代理2510的主要组件。其余组件可安装在专用服务器2520上。内核2530提供中央控制。发布服务器2540从应用服务器代理2510接收数据,并且将数据移动到归档代理2550。归档代理2550将数据移动到数据库2560。可视化引擎2570提供所有最终用户应用,并且与历史信息数据库通信并且与应用服务器代理2510直接通信以请求和接收快照信息。

在一个实施例中,在上述方法中向用户提供的数据的源可以是探测和发布引擎。探测和发布引擎获得与特定线程有关的所有信息。在优选实施例中,对于探测代理,可采用标准Java剖析(profiling)接口(JVMPI)。

参照图26,结合与之通信的java虚拟机2610、以及应用服务器2615示出探测和发布引擎2511。探测和发布引擎2511最好具有五个组件:探测控制器2512、命令代理2513、事件代理2514、事件处理程序2515以及发布引擎2516。探测控制器2512是控制其他组件的生命周期的控制器线程。事件代理2514对感兴趣的JVMPI事件登记事件处理程序。当发生该事件时,则调用这些处理程序。这些处理程序收集相关信息,并且将它添加到事件队列。然后,发布引擎2516从事件队列获得数据并且将其发送到发布服务器2540。这些代理可使用通过Java开发包1.2.2或以上版本提供的标准Java剖析接口来构造。

在本实施例中,JVMPI库通过JVM来装载,并且与JVM、探测控制器、事件代理和命令代理通信。JNI功能可用来捕获所有基于事件的数据、日期/事件戳、壁时钟(wall clock)和CPU时钟。通过JVMPI库登记的事件如表1所示:

               表1

JNI/CJava线程JVMPI库事件代理命令代理发布引擎探测控制器

从JVMPI库获得的信息存储在称作事件队列的队列中,并且事件代理从队列检索记录,并且将它们打包到数据包中,并且通过发布引擎将它们发送到发布服务器。由事件引擎从队列收集的数据如表2所示。

                          表2

服务器标识组件标识Websphere管理节点名称Websphere应用服务器名称线程标识JVMPIJNI环境类名JVMPI存储在JVMPI库的类/方法名列表中方法名JVMPI同上方法签名JVMPI同上类型(Java组件/小服务程序/JSP/JDBC)JVMPI通过检查类是否从特定类继承数据和日期时间戳OS壁时钟OSCPU时钟JVMPI使用JVMPI功能getCurrentThreadCpuTime。仅支持IBM开发包1.3和AIX5.1请求[URL]或SQL调用JVMPI需要将JVMPI对象标识转换成JVMDI对象引用。

命令代理是向内核登记的RMI服务。命令代理从可视化引擎和其他外部组件接收命令,并且使用JVMPI或JNI调用满足它们。示例性命令列表以及将这些命令提供给JVMPI还是JNI如表3所示

         表3

堆栈跟踪JVMPI会话对象JVMPI请求对象JVMPI暂停线程JNI硬杀死线程JNI软杀死线程JVMPI改变线程优先级JNI数据源最大连接池JVMPIORB池大小JVMPI万维网容器池大小JVMPI

探测控制器最好也是向内核2530登记的RMI服务,并且启动和停止其他探测组件获得探测配置。探测器的新配置从内核2530发送到探测控制器。当接收到新配置时,探测控制器将确定是否应启动或停止探测器或者改变过滤。探测/发布引擎的逻辑图如图27所示。根据该逻辑图,当如2702所示装载JVM时,如2704所示向内核登记标识线程启动、线程结束和JVM初始化完成的事件。当如2706所示完成JVM的初始化时,则如2708所示设置系统属性并且创建用于启动探测器的线程。然后,线程如2710所示激活方法进入和类装载事件,并且如2712所示等待直到应用服务器启动完毕为止。在2714,方法进入启动JVM中的处理流程,其在2716检查应用服务器是否被启动。如果被启动,则处理流程传到InitProbe线程,其在2718禁止方法进入和类装载事件,并且在2720创建探测控制器线程。在2722,探测控制器线程从内核查找探测配置。如果没有找到探测配置,则流程结束,如2724和2726所示。如果找到配置,则处理流程进入在2728判定在配置中是否激活探测。如果否,则处理流程结束。处理流程也可以采用来自内核的RMI调用的形式从新配置开始,如2730所示。如果探测被激活,则处理流程进入启动事件代理和命令代理,激活类装载事件和方法进入2事件,如2732所示。命令代理等待来自可视化引擎的命令,如2734和2736所示。方法进入事件的激活启动JVM中的处理流程,如2750所示。获得诸如CPU时钟、壁时钟、方法标识、线程标识和/或URL和SQL的数据,如2750所示,并且将其传到事件队列2760。类装载事件启动JVM中的处理流程,如2754所示。启动获得类名、方法名和签名的功能,如2756所示,并且将该信息传到类哈希表2762。事件代理从事件队列2760检索记录,如2780所示。事件代理将根据发布频率进行等待,如2782所示。

可视化引擎2750提供在本发明的方法和系统中使用的前端用户界面组件。标准J2EE技术可用于实现可视化引擎2750。可视化引擎2750的前端框架处理诸如会话管理和安全性的内务处理。可视化引擎2750最好处理尽可能多的常用任务以便提供有益于开发前端应用和商务逻辑组件的环境。可视化引擎2750位于数据库之上,其响应用户请求而访问数据库。该架构如图28所示,并且被示出为基于浏览器,使用浏览器2810与可以是Apache万维网服务器的万维网服务器2815和在数据库与万维网服务器之间接口的应用服务器2820如IBM Websphere进行通信。小服务程序可用来处理请求和管理应用流程。小服务程序也可用来通过执行表单数据输入验证以及将包含数据的java组件对象发送到JSP页来控制前端行为。JSP页可处理大部分前端表现逻辑。商务逻辑可使用企业版java组件来实现。通常,使用无状态会话组件。

小服务程序如上所述可用于表单输入数据验证,并且可用于应用逻辑流程。可提供所有小服务程序应用必须从其扩展的基本小服务程序。基本小服务程序设置全局变量,处理认证和授权,并且必要时执行到登录和拒绝访问页的重定向。提供资源束、登录消息和审核追踪消息文件。JSP生成用来使网页显示在浏览器中的HTML代码。小服务程序使用java组件对象将所需数据传到JSP。

无状态会话组件的顶层构成API。存在处理对来自数据库的数据的访问的顶级之下的企业版java组件或java类层。来自数据库的数据可以通过作为数据库访问数据访问框架一部分的数据库访问层来获得。

应用活动显示功能提供如上所述的对数据的实时访问,并且涉及可视化引擎与对应发布服务器和探测器之间的直接通信。发布服务器接口和命令代理接口被提供用于该直接通信。这些接口的存根由内核维护,并且通过使用查询代理帮手(helper)客户端从内核执行查询来由可视化引擎检索。探测器正在运行的每个服务器具有该探测器的唯一标识。一旦获得了探测器标识,就从内核获得命令代理的接口存根。然后,从探测器获得由探测器使用的发布服务器的标识。从内核获得发布服务器的对应接口存根。然后,可从所选发布服务器获得活动请求和关联数据的列表。可从探测器直接获得附加请求数据。诸如线程修改、杀死线程和改变优先级的命令通过命令代理接口直接发送到探测器。可视化引擎与探测器的命令代理和发布服务器之间的通信是实时和同步的。

可视化引擎包括上述安全功能。由于因为J2EE规范安全特性不足以提供上述安全特性,因此开发了私有API。安全特性包括认证和授权功能。通过包装第三方认证系统的私有Java API来执行认证。通过用户或组维护访问控制列表来执行授权。用户与特定组相关联,并且只能访问那些组中的服务器数据。服务器均与一个或多个组相关联。

现在将详细描述内核。内核使各种服务能够在网络上相互发现,并且提供让服务以动态、鲁棒的方式交互的方式。当使服务在线或离线时,不需任何用户干预。当任何其他服务在线或离线时,加入内核的服务可动态适应。服务消费者无需服务实现的先验知识。参照图29,示出了内核的两个实例2530和2530’。内核的架构包括核心2531、租赁管理器(lease administrator)2532、RFS服务器2533、代码库服务器2534、登记数据库2535、可用性服务器2536和配置服务器2537。内核的两个实例最好运行在单独服务器上以获得增强可用性。

内核核心2531处理来自服务的所有加入、更新、离开和查询请求。服务是探测代理、可用性服务器2536和配置服务器2537。对于加入请求,服务将代理对象及其关联服务属性传给内核。内核通过将代理对象和服务属性存储在登记数据库中来完成请求。当客户端需要特定类型的服务来完成任务时,它通过传递搜索模板并且向内核发出查询请求来查找服务。根据搜索模板,内核将对应代理对象返回给客户端。要求每个服务通过周期性地向内核发出续约请求来续约其租赁。如果内核在需要时没有接收到续约请求,则内核从登记数据库删除服务的代理对象和服务属性。该续约要求避免将请求发送到不可用的服务。当续约租赁时,探测和发布服务器最好将应用和系统信息如已完成请求的数量和CPU利用捆绑在一起。这样,租赁概念用来报告服务器的可用性和高级统计信息。服务也可向内核发出离开请求。

租赁管理器组件2532跟踪登记数据库中的记录。如果任何登记期满,或者接收到离开请求,则租赁管理器2532使对应记录被删除,使得内核将不把对应代理对象传给任何客户端。RFS(存根请求)服务器2533在连接端口上监听。当识别出连接时,向服务或客户端送出内核的序列化存根对象以用于与内核接口。代码库服务器2534类似于HTTP服务器,但是提供一种设施来让服务客户端下载其从内核获得的代理对象的类定义。登记数据库2535提供代理对象和关联服务属性的内存存储。服务器可用性和统计信息驻留在登记数据库2535中。

可用性服务器2536获得快照并且存储登记数据库2535的历史,以便帮助向可视化引擎2570提供服务器的可用性和统计数据。

配置服务器2537是存储所有组件配置数据的集中地方。配置数据采取XML形式并且保存在数据库中。用户可通过可视化引擎来改变配置。当完成此时,配置服务器2537从内核检索适应于旧配置的代理对象列表。配置服务器2537利用代理对象以广播新配置。这用来响应可视化引擎上的用户命令更新探测配置。

称作加入管理器的帮手工具请求内核的存根对象,并且向内核加入代理对象及其服务属性。如果存根对象不可用,则该工具将继续重试直到它成功为止。该工具还维护和续约租赁。查询管理器工具可由客户端用来查询特定服务。

发布服务器2540管理从各个发布引擎接收的数据。多个发布服务器可以在单个计算站(installation)中提供。发布服务器提供可视化引擎的查询能力。发布服务器还管理性能管理接口数据的增量检索。发布服务器架构如图30所示。

发布服务器2540可被实现为多线程进程。每个线程连接到特定发布引擎,并且从其接收数据。它还可包含附加线程来处理启动、关闭和与内核的通信。

参照图30,发布服务器2540产生一个线程来加入内核,并且定期续约其合约,如3002所示。发布服务器2540还产生一个线程来接受套接字连接,如3004所示。如判定块3006所示,下一步骤依赖于是否从对应发布引擎接收到查询。如果接收到数据而非查询,则建立持久性套接字连接,如3008所示。数据也与请求相关联。然后,通过发布引擎从探测器获得数据,如3010所示。如果接收到服务器重启信号,如3012和3014所示,则发布服务器在继续之前复位被重启服务器的累积数据。如果如3016和3018所示数据来自新探测器,则登记服务器使得将周期性地例如每五分钟检索服务器的PMI信息。然后,处理流程进入处理从探测器接收的方法级记录,如3020所示。如果请求退出或者记录数过多,如3022所示,则从活动请求列表中删除探测器,如3024所示。然后,处理流程返回到从探测器接受更多数据,如从3026起始的标注所示。

如果确定数据是查询,则可使用属性来确定适当的信息类型。查询可询问各种信息,如3030、3032和3034所示。然后,对结果进行序列化,并且将其回送到发布引擎。发布服务器还接收由其客户端发出的诸如对状态的特定管理请求,如3036所示,并且停止服务,如3038所示。这些任务可由管理员调用。当提供了响应查询的信息时,关闭连接,如3034所示,并且发布服务器变得可用于再次接受套接字连接。

应当理解,前述架构代表一种具有用于执行本发明方法的各步骤的装置的系统。可视化引擎包括用于向用户显示信息的装置、用于提示用户的装置以及用于从用户接收请求的装置。探测引擎包括用于获得有关分布式应用的信息以及用于执行分布式应用的过滤监视的装置。应当理解,发布引擎、归档、数据库和内核的功能与可视化引擎和探测引擎协作以提供一种用于执行本发明的各步骤的装置。

概括和结论

本发明的问题确定系统可以通过在要被监视的服务器以及用于本发明其余软件的单独服务器上安装特定探测软件来安装。该配置提供本发明系统的相对直接安装。

本发明可采用方法和用于实施这些方法的设备的形式来实施。本发明也可采用包含在有形介质如软盘、CD-ROM、硬盘驱动器或者任何其他可机读存储介质中的程序代码的形式来实施,其中,当程序代码被装载到机器如计算机中并由其执行时,该机器变成用于实施本发明的设备。本发明也可采用例如不管是存储在存储介质中、装载到机器中和/或由其执行、还是在某传输介质上例如在电气连线或电缆上、通过光纤或者通过电磁辐射来传输的程序代码的形式来实施,其中,当程序代码被装载到机器如计算机中并由其执行时,该机器变成用于实施本发明的设备。当在通用处理器上实现时,程序代码段与处理器结合以提供类似于特定逻辑电路而工作的独特设备。

虽然示例性实施例是关于使用Java技术特别是J2EE技术的企业应用来描述的,但是本发明的方法也可采用其他技术来实现。例如,本发明的方法可采用其他平台无关技术来实现。本发明的方法也可采用适用于分布式企业应用的其他技术来实现。

虽然上面详细描述了示例性实施例,但是本发明不限于此。相反,本发明应被广泛地解释为包括其他变种和实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号