内容


权威支持

用于实际故障诊断的功能和工具

从 WebSphere Application Server 系统获取诊断信息

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 权威支持

敬请期待该系列的后续内容。

此内容是该系列的一部分:权威支持

敬请期待该系列的后续内容。

摘自 IBM WebSphere 开发者技术期刊

在每个专栏中,支持专家讨论了 IBM Technical Support 的可用于 WebSphere 产品的资源、工具和其他要素,以及一些可以进一步增强您的 IBM 支持体验的技术和新思想。

最新快报

正如我们在本专栏的第一期中所说的那样,我们有时会利用这片空间向您介绍 WebSphere 支持领域中的新资源和新思想。以下是本月一些值得关注的项目:

  1. 首先是一则提示:从今年开始,美国和其他几个国家将比往年提前三周实施夏令时。这可能会对许多产品造成影响,其中包括几种基于 WebSphere 的产品,我们在发布这些产品时并未预料到立法机构会做出这样的更改。对于这个即将发生的事件,IBM Support 已在几个月前公布了有关的警告和更新,但是现在时间将近,您有必要再次进行检查,以确保自己有充分的准备。如果您要确定某些产品是否需要安装修复程序,请访问 IBM 产品警告站点。此外,您还可以收听关于此事的 WebSphere Support Technical Exchange 广播重放。

  2. IBM Guided Activity Assistant 刚刚发布了一组新内容,以指导您诊断与 WebSphere Application Server 的 J2C 组件 Java™ 进程的挂起有关的问题。该内容可通过 IBM Support Assistant 中的功能更新程序下载。

  3. Memory Dump Diagnostic for Java 工具 (MDD4J) 刚刚发布了其 2.0 版的一个 beta,它覆盖了更多的堆转储类型,并提供了几项性能改进和修复。预计未来的更新版本会更加注重增强其可用性。该工具也可通过 IBM Support Assistant 中的功能更新程序下载。

故障诊断工具

上一篇文章中,我们对 WebSphere 环境下可供使用的各种支持资源进行了简要概述;这些资源可以帮助您查找信息、获取帮助,甚至能实现 WebSphere 故障诊断工具的主要功能。在本文中,我们将进一步讨论一些可用于 WebSphere Application Server 故障诊断的实用功能和工具。

在大多数故障诊断练习的核心部分中,下列基本论断通常都会适用:

当系统运行不正常时,我需要获得关于系统内部情况的信息,并通过分析这一信息,确定问题的原因。

因此我们的开发团队投入了大量精力,力图改进获取和处理这一信息的机制。我们来看看其中的一些主要领域。

日志记录和跟踪

在您对 WebSphere Application Server 进行故障诊断时,日志记录工具很可能是您使用的第一项问题确定功能。这一工具集向用户和 IBM Support 提供深入了解运行时的能力,这种能力在确定基本问题时是必需的。

WebSphere Application Server 日志记录基础结构是基于标准 Java 的日志记录基础结构(即java.util.logging)建立的。在一个典型的 WebSphere Application Server 配置中,日志记录被设置为将普通和严重的日志消息分别写入两个文件,即SystemOut.log 和 SystemErr.log。

用于查看日志消息的重要工具包括 WebSphere Application Server 管理控制台的故障诊断面板和 Log and Trace Analyzer (LTA)。

  • 在这两种工具中,管理控制台较为简单。控制台在 Troubleshooting 菜单中提供了查看本地或远程日志文件的简单工具。虽然它可能缺少较为复杂的工具所提供的高级功能,但您可以用它快速查看捕获的日志并进行跟踪。

  • 另一方面,LTA 则是一个非常有用、友好的日志界面,提供一项强大的、用于多个产品和服务器之间的日志关联功能。简单的说,它在更高的级别上提供了一种查看日志的简易方法。LTA 采用了通用基础事件 (Common Base Events) 标准,该标准为来自不同产品的消息提供了一种通用格式。LTA 是 Autonomic Computing Toolkit 的一部分;随 WebSphere Application Server 捆绑的 WebSphere Application Server Toolkit 中也提供了 LTA 的一个版本。

WebSphere Application Server 运行时中与之相同的底层日志记录基础结构也被用于跟踪。两者的主要区别在于用途:

  • 日志一般只用来报告系统生命期内的重要事件。日志是缺省启用的,只带来最小的性能开销。日志消息一般会被翻译成本地语言,供最终用户和管理员参考。

  • 跟踪则能极为详尽地提供关于系统中事件序列的信息。跟踪功能一般在缺省情况下是禁用的,使用它们会带来巨大的性能开销(具体取决于选择的跟踪数量)。跟踪消息一般只以英文显示,它们是供专门从事故障诊断的技术用户使用的。

虽然 LTA 也能用来检查跟踪文件,但一些工程师仍然选择使用专用的 TraceAnalyzer 工具。该工具提供一组附加的功能集,对于查看和了解复杂的跟踪文件尤为有用,如按线程或组件筛选跟踪信息、根据长期跟踪生成调用堆栈信息,以及检测时间轴中的空白等功能。

其他与日志记录有关的工具包括:

  • IBM 服务日志:(activity.log) 这一工具将合并某个特定的 WebSphere Application Server 节点上的所有关键消息,并包含有助于确定问题的扩展服务信息。

  • 基于 JMX 的监视:除了记录在简单的文件中外,大多数由日志记录基础结构处理的 WebSphere Application Server 关键事件也被导出为 JMX 事件。因此可以设计各种工具,用来远程监视和捕获日志信息。在利用这一功能的工具中,Tivoli Monitoring for Web Infrastructure 工具是一个重要的例子。

专项跟踪和运行时检查

WebSphere Application Server 运行时还提供了几种特定形式的运行时检查和跟踪,以帮助诊断一些很具体的常见问题。下面有两个例子:

  • 连接泄漏检测:如果应用程序在使用数据库连接后未能将其正常释放,这种特殊的跟踪能帮助您辨识问题的原因。

  • 会话交叉检测:这种特殊的跟踪和检查用来检测某些情景,在这些情景中,由于应用程序或运行时中的缺陷或处理错误,来自某一 HTTP 会话的信息会意外地由另一用户的 HTTP 会话提供。

如果要启用这些工具,只要执行某个特定组件的跟踪或设置某个特定的自定义属性即可。当出现明显的需求时,产品中还可能加入针对其他常见问题的类似工具。

第一次失败数据捕获

第一次失败数据捕获(FFDC) 是一个内置在 WebSphere Application Server 运行时中的工具,该工具试图在发生可能的非正常情况时,自动捕获并保存关键信息。因为 WebSphere Application Server 遇到的许多问题都与某种 Jave 异常有关,所以 FFDC 将监视服务器操作过程中引发的所有异常。一旦引发一个异常,将对其进行实时检查,以确定它是否属于非预期的异常,或是否属于某个可能正在发生的问题的一部分。如果是,FFDC 将向文件中写入一条记录(FFDC 事故记录),其中包含堆栈跟踪、异常发生时的环境,以及对生成这一异常的服务器的组件状态所做的一个短转储(可选)。稍后可以对这些FFDC 事故记录进行事后检查,以深入了解发生的情况。

由 FFDC 捕获的信息可以帮助诊断多种问题(理论上可以诊断与某一特定异常密切相关的任何问题)。不过,实际上,现在对 FFDC 事故记录的解释工作可能很有挑战性,这主要是因为很难可靠地预测哪些异常是良性的,哪些异常会成为诊断一些问题的关键。因此,FFDC 工具倾向于生成大量的事故记录。(捕获一个大的但不需要的记录,总比没捕获到某条必需的记录要好。)在以后的文章中,我们将提供有关如何配置和利用 FFDC 工具的教程。

Diagnostic Provider

Diagnostic Provider 是 WebSphere Application Server V6.1 中引入的一个新工具,如果您怀疑刚才发生了一个问题,它允许您在应用服务器内有选择地查询某个特定组件,并获取有关该组件状态的详细信息。每个组件的 Diagnostic Provider 可以用来启动该组件的自检,获得与该组件有关的静态配置信息转储和该组件的运行时状态转储。可以进一步配置每个 Diagnostic Provider 捕获的运行时状态诊断数据量,以管理性能开销。可以通过管理控制台或 wsadmin 命令行工具控制 Diagnostic Provider。

另外,由 WebSphere Application Server 运行时生成的几个日志和错误消息现在都含有一个Diagnostic Provider ID,用来唯一地标识那个位于错误报告来源处的 Diagnostic Provider。此后您可以查询那个特定的 Diagnostic Provider,以获取更多信息,并诊断错误的原因。

在目前的版本中(版本 6.1), Connection Manager 组件、WebContainer 组件、System Management 组件,以及后面讨论的性能和诊断顾问 (Performance and Diagnostic Adviser) 都有专门的 Diagnostic Provider。预计在 WebSphere Application Server 的未来版本中将会实现更多的 Diagnostic Provider,以及不断增长的工具集,以利用它们提供的信息。应用程序也可以利用 Diagnostic Provider 的框架提供它们自己的诊断数据。

JVM 级的诊断

在其核心中,WebSphere Application Server 首先是一个 JVM 进程。因此,为所有的 JVM 进程提供一系列诊断工具的想法是十分自然的。实际上,在 WebSphere Application Server 的用户们遇到的问题中,有一部分是在 JVM 级首先表现出来的,如内存不足、崩溃等。

  • verboseGC 日志大概是最常见的JVM 诊断类型。它显示了 JVM 生存期间,各个垃圾回收周期的顺序。它作为确定问题时的一项初始的辅助工具,常常具有不可估量的价值,它被用来检测和诊断 JVM 中所有类型的内存分配异常问题,如内存泄漏、碎片,以及与 GC 有关的性能问题等等。IBM Support Assistant 中提供的 PMAT 工具,目前是帮助分析 verboseGC 日志文件内容的基本工具。

  • 线程转储也是一种极为常见的 JVM 诊断类型。线程转储(也是一个 javacore) 可以根据管理员的请求触发,也能在 JVM 中遇到某种特殊情况时自动触发。线程转储是一个文本文件,包含了 JVM 状态的关键方面的一个相对较短的快照。该快照最常用的部分是 JVM 中当前活动线程的列表,线程转储也因此得名。线程转储最常见的用途是诊断 JVM 中出现挂起、崩溃或 CPU 占用率过高的原因。线程转储是相对较短的文本文件,可以用简单的文本编辑器进行检查。不过,若是使用某种特殊的工具,用来解析和组织其中的内容,自动检测并突出关键信息和异常,常常会更有效。现在用于此用途的工具主要有两种:IBM Support Assistant 中提供的ThreadAnalyzer 和AlphaWorks 上提供的 Thread and Monitor Dump Analyzer

  • 堆转储是由 JVM 生成的另一种形式的转储,可以按需生成,也可以在满足特殊条件时自动生成。通常,堆转储通常是一个很大的文件,它包含当前 JVM 堆中所有对象的一个列表。它用于在出现内存不足的情况下执行深入分析。例如,分析者可以找出哪些对象在堆中占用了最多的空间,哪些对象正在增殖,等等。由于堆存储是一个很大的文件,手动检查是不切实际的。Memory Dump Diagnostic for Java 工具 (MDD4J) 可以在 IBM Support Assistant 中找到,目前它是执行此类分析的主要工具。

  • 第三类 JVM 转储是系统转储,或是简单的核心文件。这是开销最大、但也是最完整的转储方式。它是一个巨大的二进制文件,反映了 JVM 的全部内容:每一个 Java 对象及其字段、每一个线程、每个内存区域,等等。系统转储的最初用途是在其他类型的转储不够用或无法生成时,帮助诊断崩溃、挂起或复杂的内存分配问题。不过,由于系统转储非常完整,它也能用来获取 WebSphere Application Server 运行时当前状态的多方面信息,甚至运行时期间应用程序的执行信息。预计将来系统转储在这方面还会有更多的用途。在IBM 之外可获得的WebSphere Application Server JVM 系统转储内容检查工具相对较少。因此,一般情况下,系统转储应发送给IBM Support 做深入分析。不过 IBM 最近引入了一项被称为 Diagnostic Tooling Framework for Java (DTFJ) 的新技术,将使系统转储检查工具的开发变得容易起来。预计基于 DTFJ 技术的工具在未来将得到广泛使用。

  • 最后,JVM 还提供了自己的 JVM 跟踪工具,与 WebSphere 跟踪工具不同,它在单个 Java 方法调用级、以及 JVM 实现操作的内部事件级提供了跟踪工具。这种类型的跟踪最常用于内部 JVM 问题的诊断,偶尔也用来诊断 WebSphere Application Server 级的问题。不过,方法级别的跟踪对于 WebSphere 跟踪而言是很有用的辅助手段。我们计划在不久的将来扩展它的用途并编写相关文档。

Java Diagnostics Guide 是一个主要的信息来源,提供与各种类型的 JVM 级诊断工具和相应的转储生成方法相关的信息。这些工具中的每一个都具有各自格式的文档。

性能相关工具

虽然各种性能相关工具的基本用途是监视、度量和优化系统性能,但它们也提供一个重要的机制,用来深入了解应用服务器的内部状态,这对诊断各种问题有不可估量的价值(无论这些问题是否与性能直接相关)。

WebSphere Application Server 运行时包含的性能工具主要分两种类型:

  • 性能监视基础结构 (PMI) 为多项反映服务器内部操作的统计数据提供计数器,如每个Servlet 或 EJB 中每秒处理的请求数、平均响应时间、各种资源(如线程、数据库连接)的使用率,等等。PMI 是一个 WebSphere 专用工具,能提供 WebSphere Application Server 和其他相关产品的详细信息。

  • 请求度量提供了一种机制,用于跟踪单个请求在通过系统时的执行流,并度量执行流中每一步骤的处理时间。请求度量工具中的信息可以使用标准应用程序请求度量 (Application Request Measurement) 基础结构访问。请求度量可以从多种产品中获得,这使跟踪一个通过复杂系统的端到端请求成为可能,即使这一过程涉及到多个不同的服务器组件和层。

这两个工具提供的信息对于一般的故障诊断有两种用途:

  • 问题隔离:通过观察整个系统中有哪些子系统或组件处于活动状态或接受到某一特定的处理请求,我们常常能推断出,当请求不再流动或不能正常完成时,是哪个组件出了问题。

  • 问题标识:我们将 PMI 或请求度量提供的各种统计数据与一个运行良好的系统中的正常数值进行比较,会发现一些具体问题,其表现是某个特定的统计项出现异常,如某种资源利用率过高、溢出等等。

PMI 和请求度量的信息都可通过公共 API 导出,使专用工具或第三方工具对这些信息的利用成为可能。WebSphere Application Server 管理控制台中的 Tivoli® Performance Viewer,是一个仅用于检查 PMI 信息的主要工具。IBM Tivoli Composite Application Manager family of tools (ITCAM) 提供了一个更全面的平台,可与包括 PMI、RM 和其他技术在内的性能诊断方法协同工作,适用于多种产品和应用环境。

监视和检测问题

WebSphere Application Server 运行时还包含几种重要的工具,用来在问题刚出现时(而不是在事后)监视和检测问题。如果您运行的应用程序十分稳定且状态良好,您可能根本不会注意这些工具在运行,但是若出现问题,您就会发现这些工具发出警报,这些工具包括:

  • 挂起线程检测工具能在某线程完成请求的时间过长时,自动发出警告,从而帮助诊断挂起或变慢等性能问题。它提供了一个植入 WebSphere Application Server 运行时的挂钩,方法是让为线程指定一个超时长度(称为挂起阀值)。如果应用程序的运行时间超过了这个指定的挂起阀值,该工具将发出一则提醒线程可能已经挂起的通知。

  • 性能和诊断顾问在后台监视着系统,并提供关于特定的 WebSphere Application Server 运行时组件的设置或 JVM 设置的建议。这一工具可以提供多种类型的建议,包括对 ORB 和 Web 池的池设置的建议,对会话设置的建议,对内存泄漏的建议,甚至包括对数据源的诊断建议。每个顾问都可以通过WebSphere Application Server 管理控制台予以启用或禁用。

调查与某个特定的子系统相关的问题

上面介绍的这些工具,广泛适用于在使用 WebSphere Application Server 时遇到的各种情况,除此之外,针对某种特定类型的问题或子系统的专用工具集还在不断增长。例如:

  • System Management Configuration Validation 工具可以执行自动检查,检测复杂的 XML 文件集(文件中包含完整的 WebSphere Application Server 系统配置)中的不一致和错误之处。由于经常进行运行时安全检查,最近几个版本的产品中很少出现这样的错误,但是,未发现的产品缺陷、配置操作期间发生的意外事件(如崩溃),或在配置期间发生的操作失误,仍然可能使这种错误突然出现。该工具已被嵌入 WebSphere Application Server 运行时之中,可以在管理控制台中调用(在故障诊断面板中)。

  • DumpNameSpace 工具提供 JNDI 名称树内容的一个简单转储,该转储对于某个特定服务器上的应用程序是可见的。该工具通常用来帮助找出某些问题;这些问题的起因是服务器上错误的 JNDI 资源配置,或是由应用程序代码引起的对这些JNDI 资源的错误访问。DumpNameSpace 工具是一个独立的程序,在 WebSphere Application Server 安装的 bin 目录下。

  • Class Loader Viewer 允许管理员了解应用服务器上类装载子系统的内部情况,有时也用来查看应用服务器的复杂配置。Class Loader Viewer 解决的多是与类装载有关的问题,最常见的例子就是 ClassNotFoundException。Class Loader Viewer 捆绑在 WebSphere Application Server 中,可以在管理控制台的Troubleshooting 菜单中启动它。

解决安装问题的工具

有几个工具是用来解决与安装有关的具体问题的,它们每个都有特定的用途:

  • Installation Verification Tool 允许您对某次特定安装的单个概要进行简单测试,以检验 WebSphere Application Server 概要的基本运行状况。该工具常常在产品安装之后使用,以确保已经正确安装了所有内容。

  • 如果您需要对 WebSphere Application Server 安装进行更为深入的完整性检查,如是否存在文件级的更改或不一致之处,您可以使用 Installation Verification Utility,它允许您了解系统生命周期内发生的的文件级更改。这一实用工具还能提供一项功能,帮助 IBM Support 确定支持的文件集是否已随 WebSphere Application Server 正确安装并处于正确的位置。

除此之外,WebSphere Application Server 还包含其他一些用于确定问题的辅助工具,帮助您安装 service pack 或修复程序包,并确定已经安装的其他修复程序集:

  • Update Installer:允许您将不同的 service pack 或单个修复程序安装到 WebSphere Application Server。

  • VersionInfo、HistoryInfo GenHistoryReport:这些工具允许您对 WebSphere Application Server 安装进行查询,以确定在其中找到的或先前安装的软件级别。GenHistoryReport 将以 HTML 的形式显示这些内容。

所有这些工具和命令都捆绑在标准的 WebSphere Application Server 安装中。

调试器和概要分析工具

调试和概要分析能力对于应用程序支持流程也常常具有很高的价值。WebSphere Application Server 通过 JVM,或该 JVM 的JVMPI(或 JVMTI)界面提供这些工具。WebSphere Application Server 系统管理使您可以通过 WebSphere Application Server 管理控制台或 wsadmin 脚本,轻松地设置适当的 JVM 参数,以启用这些工具。

Rational® 和其他基于 Eclipse 的开发工具,包括 Rational Application DeveloperWebSphere Application Server Toolkit,都具有与其相连的强大调试器和概要分析工具。在执行与概要分析有关的工作时,您可能会考虑使用 Performance Inspector 工具集,它提供的各种工具可从 JVM 中提取运行时性能信息并加以分析,而且使用相同的基本界面。这些工具可以从 alphaWorks(对于 Windows)或 Sourceforge(对于 Linux)下载。

结束语

与上篇文章相同,这些主题的每一个都足以写成一大篇文章,虽说如此,知道各种工具的适用范围仍显得很重要,这能使您在面对某个问题时,更容易地挑选出最好的工具。我们希望这篇文章能帮助您了解手头的工具。随着本专栏的继续,我们将逐步深入,为您提供更多与支持相关的实用信息。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=215978
ArticleTitle=权威支持: 用于实际故障诊断的功能和工具
publish-date=04272007