`

WebSphere Application Server 故障诊断的资源以及相关工具的介绍

阅读更多
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0701_libing/

  文档选项
  打印本页

   将此页作为电子邮件发送




级别: 中级

何 利兵 (Libing.He@ca.com), ICA中国技术中心(CTC)的软件测试工程师


2007 年 5 月 24 日

本文主要介绍了 WebSphere Application Server提供的一些帮助管理员以及开发者进行故障诊断的资源和工具。
概述

故障诊断是查找并除去问题的起因的过程。一旦您发现WebSphere运行环境有问题,故障诊断过程就开始。WebSphere的基本故障诊断策略包括:

1. 记录症状

根据您的应用程序、服务器或是工具中出现的问题的类型,您可能接收到表明出现问题的消息。通过记录每条消息的详细信息,您就会对定位问题的所在了解更多。

2. 重新创建问题

如果您一直有可重复的测试用例,则您可以很方便地确定哪些解决方案是必需的。

3. 除去可能的起因

通过排除那些不是导致问题的组件以缩小问题的范围,您可以使问题简单化,并且避免浪费时间。

4. 使用诊断工具

WebSphere Application Server提供了一些帮助管理员以及开发者进行故障诊断的工具和资源,合理的利用这些工具和资源,当WebSphere Application Server出现故障的时候,可以帮助我们准确的定位问题的所在。






回页首




1.故障诊断的资源

1.1 确定WebSphere产品安装信息

WebSphere Application Server的版本以及相关软件(例如:WebServer,Plug-in,JDK)的版本信息是重要的。所有的组件要求在正确的版本以便它们之间能够很好的协调工作。下面的主题告诉您怎样确定您的环境中各组件的版本信息。

1.1.1 确定WAS产品信息

1)通过执行versionInfo命令

执行WebSphere Application Server安装目录的bin目录下的versionInfo命令,由输出信息可以查看到WAS的产品信息。

Windows平台执行versionInfo.exe

Unix和Linux平台执行versionInfo.sh

列表1. 在Linux系统下执行versionInfo命令的一个例子以及输出信息.



# cd  <was_home>/bin
# ./versionInfo.sh
WVER0010I: Copyright ? IBM Corporation 2002; All rights reserved.
WVER0011I: WebSphere Application Server Release 6.0
WVER0012I: VersionInfo Reporter Version 1.15, Dated 9/20/03

IBM WebSphere Application Server Product Installation Status Report

Report at date and time 2005-06-21T13:07:05+08:00

Installation
---------------------------------------------------------------------
Product Directory   /opt/IBM/WebSphere/AppServer
Version Directory   /opt/IBM/WebSphere/AppServer/properties/version
DTD Directory       /opt/IBM/WebSphere/AppServer/properties/version/dtd
Log Directory       /opt/IBM/WebSphere/AppServer/logs/update
Backup Directory    /opt/IBM/WebSphere/AppServer/properties/backup
TMP Directory       /tmp

Installation Platform
Name            IBM  WebSphere Application Server
Version         6.0-

Technology List
ND            installed

Installed Product
Name          IBM WebSphere Application Server - ND
Version       6.0.0.1
ID            ND
Build Level   o0445.08
Build Date    11/10/04

End Installation Status Report



2)通过WebSphere Application Server安装目录下的产品属性文件查找 查看<was_home>/properties/version/WAS.product 文件,此文件包含WebSphere Application Server产品相关信息.

列表2. WAS.product文件的一个示例如下:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE product PUBLIC "productId" "product.dtd">
<product name="IBM Websphere Application Server - ND">
  <id>ND<id>
  <version>6.0.0.1</version>
  <build-info date"11/10/04" level="o0445.08"/>
</product>



3)通过SystemOut.log文件查找

查看任意概要文件(profile)下的SystemOut.log文件,此文件包含WebSphere Application Server产品相关信息.


列表3. SystemOut.log文件的一个示例如下:
************ Start Display Current Environment ************
WebSphere Platform 6.0 [ND 6.0.0.1 o0445.08] running with process name
  Wasdev25Node01Cell\wasdev25Node01\server1 and process id 12514
Host Operating System is Linux, version is 2.4.21-278-default
Java version = J2Re 1.4.2 IBM build cxia32142sr1w-200041028 (JIT enabled:jitc)
Java Compiler = jitc, Java Vm name = Classic VM
was.install.root = /opt/IBM/WebSphere/AppServer
user.install.root = /opt/IBM/WebSphere/AppServer/profiles/AppSrv02
Java Home = /opt/IBM/WebSphere/AppServer/java/bin/../jre
************ End Display Current Environment ************



4)通过管理控制台查找

如果WebSphere Application Server已经启动且在运行中,您可以通过管理控制台来查看WebSphere Application Server的产品信息处,这也是最方便的一种查看WebSphere Application Server产品信息的方式了。

1)访问管理控制台 http://localhost:9060/ibm/console

2)在左边的导航菜单中选择 服务器 -> 应用程序服务器

3)点击一个服务器,例如 Server1

4)选择 运行时 标签

5)从 其它属性 列表下,点击 产品信息


图1 通过管理控制台查找产品信息


1.1.2 确定JDK的版本信息

1)通过SystemOut.log文件查找

查看任意慨要文件(profile)下的SystemOut.log文件,此文件包含WebSphere Application Server产品相关信息,包括JDK的版本信息。

<profile_home>/logs/server1/SystemOut.log

2)通过从命令行运行 java -fullversion

<was_home>/java/bin/java -fullversion


列表4: 从命令行运行确定jdk版本信息
wasdev25:/opt/IBM/WebSphere/AppServer/java/bin # ./java -fullversion
java full version "J2RE 1.4.2 IBM build cxia32142sr1w-20041028"



1.1.3 确定Web服务器的版本信息

1)检查Windows平台上的IBM HTTP Server的版本信息,运行apache.exe -v


列表5: 检查Windows平台上的IBM HTTP Server的版本信息

apache.exe -v
C:\Program Files\IBM HTTP Server\bin>apache -v
Server version: IBM_HTTP_Server/6.0 Apache/2.0.47
Server built:   Nov  4 2004 10:11:21



2)检查Unxi和Linux平台上的IBM HTTP Server的版本信息,运行httpd -v


列表6: 检查Unix/Linux平台上的IBM HTTP Server的版本信息
httpd -v
Server version: IBM_HTTP_Server/6.0 Apache/2.0.47
Server built:   Nov  4 2004 10:11:21



1.2 管理控制台消息(Administrative console messages)

管理控制台提供了一些重要的关于WAS运行时事件以及配置问题的信息。在管理控制台中的故障诊断中显示了运行状态的消息,您可以查看配置问题的消息以及运行时消息。

图2. 显示一个运行时事件的错误信息页,包含一些在运行时的错误列表:




如果您需要查看一个消息的详细内容,在消息列中点击相应的消息文本即可,下图显示的是点击第一个消息内容后的样子。


图3. 显示的是点击第一个消息内容后的样子:


根据这些配置问题或者运行时的消息,您可以了解Application Server的运行状态,以及根据相应的错误消息的提示信息进行相应的配置。

1.3 使用日志文件

WebSphere Application Server 可以写系统消息到几个通用日志。这些日志包括 JVM 日志、进程日志和 IBM 服务日志。

1.3.1 JVM日志

JVM 日志是通过重定向 JVM 的 System.out 和 System.err 流到独立的日志文件而创建的。WebSphere Application Server 写格式化的消息到 System.out 流。另外,应用程序和其它代码可以写入这些流,这通过使用流定义的 print() 和 println() 方法实现。

通常,System.out 日志用于监控应用程序服务器的运行是否正常。System.out 日志可用于问题确定。System.err 日志包含异常堆栈跟踪信息,这在执行问题分析时很有用。

因为每个应用程序服务器都代表 JVM,所以每个应用程序服务器和它的所有应用程序都有一组 JVM 日志,缺省情况下该日志位于 installation_root/profiles/profile_name/logs/server_name 目录。在 WebSphere Application Server Network Deployment 配置的情况下,也为 Deployment Manager 和每个节点管理器创建 JVM 日志,因为它们也代表 JVM。

1.3.2 配置JVM日志

可以利用管理控制台来查看以及修改JVM SystemOut.log 和 SystemErr.log

1)访问管理控制台页面 http://localhost:9060/ibm/console

2)在左边的导航菜单中点击故障诊断 -> 日志和跟踪

3)点击一个server名字来选择一个server

4)选择 JVM日志

5)在 配置 标签下,显示了JVM日志的相关属性


图4. 显示JVM日志的相关属性


1.3.3 进程日志

WebSphere Application Server 进程包含两个可访问进程中运行的本机代码的输出流。这些流是 stdout 和 stderr 流。本机代码(包括 JVM)可以将数据写到这些进程流。另外,JVM 提供的 System.out 和 System.err 流也可以配置为将它们的数据写入这些流。

缺省情况下,在应用程序服务器启动时重定向 stdout 和 stderr 流到日志文件,其包含由本机模块(.dll、.exe、UNIX 库和其他模块)写入 stdout 和 stderr 流的文本。缺省情况下,这些文件存储为 installation_root/logs/applicationServerName/native_stderr.log 和 native_stdout.log。

1.3.4 配置进程日志

可以利用管理控制台来查看以及修改JVM SystemOut.log 和 SystemErr.log

1)访问管理控制台页面 http://localhost:9060/ibm/console

2)在左边的导航菜单中点击故障诊断 -> 日志和跟踪

3)点击一个server名字来选择一个server

4)选择 进程日志

5)在 配置 标签下,显示了进程日志的相关属性


图5 显示进程日志的相关属性


1.3.5 服务日志(Service log)

服务日志是用二进制格式写的特殊日志。您无法使用文本编辑器直接查看日志。您不可以直接编辑服务日志,因为这样做会破坏日志。要将服务日志从一台机器移动到另一台机器,您必须使用支持二进制文件传送的机制(如 FTP)。

您可以两种方式查看服务日志:

1)建议使用日志分析器工具来查看服务日志。此工具提供互操作式查看和分析能力,此能力在识别问题方面很有用。

2)如果您无法使用日志分析器工具,您可使用 Showlog 工具将服务日志的内容转换成接下来您可写到文件或转储到命令外壳程序窗口的文本格式。

要运行 showlog 脚本:

在服务日志驻留的机器上打开 shell 窗口。

更改目录到 installation_root/bin,其中 install_directory 是安装了 WebSphere Application Server 产品的标准路径。

运行 showlog 脚本:

在 Windows 系统上,此脚本名为 showlog.bat。

在 UNIX 和 z/OS 系统上,此脚本名为showlog.sh 要将服务或活动日志(activity.log)内容导向标准输出,就使用 showlog activity.log 命令。

要转储服务或活动日志到文本文件以便使用文本编辑器查看,就使用 showlog activity.log textFileName 命令

1.3.6 配置服务日志

1)访问管理控制台 http://localhost:9060/ibm/console

2)在左边的导航菜单中点击故障诊断 -> 日志和跟踪

3)点击一个server名字来选择一个server

4)选择 服务日志

5)在 配置 标签下,显示了服务日志的相关属性


图6 显示服务日志的相关属性


1.4 使用跟踪

使用跟踪获取关于执行 WebSphere Application Server 组件的详细信息,这些组件包括应用程序服务器、客户机和环境中的其它进程。跟踪文件显示 WebSphere Application Server 基本类调用的方法的时间和顺序,并且您可使用这些文件来查明故障。

通常由 IBM 技术支持人员要求收集跟踪。如果您不熟悉 WebSphere Application Server 的内部结构,则跟踪输出可能对您没有意义。

默认情况下,所有WebSphere Application Server组件的traces是关闭的,您需要手工的激活它。一定要记住的是,当您完成了信息的收集后,需要关闭traces,因为打开traces会降低WebSphere Application Server的性能。

服务器进程的诊断跟踪配置设置确定服务器进程的初始跟踪状态。服务器启动时读配置设置并使用它们配置跟踪服务。在服务器进程运行时也可以更改许多跟踪服务属性或设置。

1.4.1 服务器启动时启用跟踪

1)访问管理控制台 http://localhost:9060/ibm/console

2)在左边的导航菜单中点击故障诊断 -> 日志和跟踪

3)点击一个server名字来选择一个server

4)选择 诊断跟踪

5)在 配置 标签下,显示了traces的相关属性


图7 显示traces的相关属性


6)启用跟踪复选框启用跟踪,清除此复选框禁用跟踪。

7)选择将跟踪输出定向到文件还是定向到内存中循环缓冲区

8)如果为跟踪输出选择内存中循环缓冲区,则设置缓冲区的大小(以千条目为单位)。 这是在任何给定的时间缓冲区中将保留的最大条目数。

9)如果为跟踪输出选择文件,则将最大大小(以兆字节为单位)设置为应该允许文件增长的大小。

当文件达到此大小时,将关闭现有文件、对它重命名并重新打开具有原始名称的新文件。文件的新名称将基于带有添加给其的时间戳记限定符的原始名称。另外,指定要保留的历史文件数。

9)选择已生成的跟踪期望的格式。

10)保存更改的配置。

11)要输入跟踪字符串以将跟踪规范设置为需要的状态:

a. 在控制台导航树中单击故障诊断 > 记录和跟踪。

b. 选择服务器名。

c. 单击更改日志级别详细信息。

d. 如果已启用所有组件,则可能要关闭它,然后启用特定组件。

e.单击组件或组名。

f.在跟踪字符串框中输入跟踪字符串。

g.选择应用,然后选择确定。

12)允许节点有足够时间同步,然后启动服务器。

通过使用下列过程,可修改确定为正在运行的服务器活动跟踪哪些组件的跟踪服务状态。

1.4.2 在运行的服务器上启用跟踪

1)访问管理控制台 http://localhost:9060/ibm/console

2) 在左边的导航菜单中点击故障诊断 -> 日志和跟踪

3) 选择运行时选项卡。

4) 如果您要将您的更改写回到服务器配置,则选择保存跟踪复选框。

5) 通过将跟踪规范更改为期望状态,更改现有跟踪状态。

6) 如果从现有跟踪状态的更改为期望的,则配置跟踪输出。

7)单击应用。

1.5 检测 J2EE 应用程序中的挂起线程

J2EE 应用程序中的一个常见错误是挂起线程。挂起线程可能由于简单软件缺陷(例如,无限循环)或更复杂的原因(例如,资源死锁)导致。当线程运行未绑定的代码路径时(例如,当代码在无限循环中运行时),系统资源(例如,CPU 时间)可能由此挂起事务消耗。另一方面,因为处于死锁方案,所以即使所有资源都空闲,系统也可能变得不应答。除非最终用户或监控工具报告该问题,否则系统可能无限期地保持在此退化状态中。

缺省情况下,WebSphere Application Server 的挂起检测选项打开。如果早一些对失败的服务器进行检测,那么您可以配置挂起检测策略以适应您的应用程序和环境,从而可以报告潜在挂起。检测到挂起线程 时,WebSphere Application Server 将通知您,以使您可以对问题进行故障诊断。

使用挂起检测策略,您可以指定对于完成工作单元来说过长的时间。线程监控器检查系统中的所有受管线程(例如,Web 容器线程和对象请求代理程序(ORB)线程)。非受管线程(由应用程序创建的线程)不受监控。

当 WebSphere Application Server 检测到线程活动时间比线程监控器阈值定义的时间长时,应用程序服务器将采取以下操作:

在 WebSphere Application Server System.Out 日志文件中记录警告,标识挂起线程的名称及其已活动的时间。以下消息将写入日志: WSVR0605W: 线程 threadname 已活动 hangtime,可能挂起。服务器中总共有 totalthreads 个线程可能挂起。其中:threadname 是 JVM 线程转储中出现的名称,hangtime 给出线程已活动时间的近似值,而 totalthreads 给出系统线程的总估计。
发出 Java 管理扩展(JMX)通知。此通知启用第三方工具以获取事件并采取适当的操作,例如触发服务器的 JVM 线程转储,或者发出电子页面或电子邮件。以下 JMX 通知事件是在 com.ibm.websphere.management.NotificationConstants 类中定义的:
TYPE_THREAD_MONITOR_THREAD_HUNG 此事件由(潜在)挂起线程的检测触发。
TYPE_THREAD_MONITOR_THREAD_CLEAR
如果先前报告为挂起的线程完成其工作,则此事件触发。请参阅错误警报。
触发器在性能监视基础结构(PMI)数据计数器中更改。这些 PMI 数据计数器由各种工具(例如,Tivoli Performance Viewer)使用以提供性能分析。
1.5.1 挂起时间阈值的自动调节

如果线程监控器确定发出了过多错误警报(由挂起和清除消息对数确定),那么它可以自动调节阈值。此调节发生时,以下消息将写入 System.out 日志:

WSVR0607W: 错误报告了过多线程挂起。挂起阈值现在设置为 thresholdtime。其中:thresholdtime 是线程被认为挂起前它可以活动的时间(以秒为单位)。您可以阻止 WebSphere Application Server 自动调节挂起时间阈值。

1.5.2 调整运行中服务器的挂起检测策略

您可使用 wsadmin 脚本接口调整线程监控设置。这些更改会立即生效,但不会保存在服务器配置中,服务器重新启动时会丢失。以下脚本提供了一个示例,说明如何使用 wsadmin 工具调整线程监控的属性:



# Read in the interval, threshold, false alarm from the command line
set interval [lindex $argv 0]
set threshold [lindex $argv 1]
set adjustment [lindex $argv 2]
# Get the object name of the server you want to change the values on
set server [$AdminControl completeObjectName "type=Server,*"]
# Read in the interval and print to the console
set i [$AdminControl getAttribute $server threadMonitorInterval]
# Read in the threshold and print to the console
set t [$AdminControl getAttribute $server threadMonitorThreshold
# Read in the false alarm adjustment threshold and print to the console
set a [$AdminControl getAttribute $server threadMonitorAdjustmentThreshold]
# Set the new values using the command line parameters
$AdminControl setAttribute $server threadMonitorInterval  ${interval}
$AdminControl setAttribute $server threadMonitorThreshold ${threshold}
$AdminControl setAttribute $server threadMonitorAdjustmentThreshold ${threshold}







回页首




2.诊断故障的工具

2.1日志分析器

Log Analyzer是一个图形化的工具,用来帮助用户查看、分析日志的。日志分析器采用一个或多个服务日志或跟踪日志,合并所有数据,并显示这些条目。根据它的症状数据库,该工具分析和解释日志条目中的事件或错误情况来帮助您诊断问题。日志分析器有一个特殊的功能部件,使得它可以从 IBM Web 站点下载最新的症状数据库。要下载症状数据库的最新更新,使用日志分析器界面中的文件 -> 更新数据库 -> WebSphere Application Server 症状数据库选项(对于 WebSphere Application Server),或 WebSphere Application Server Network Deployment 症状数据库选项(对于 WebSphere Application Server Network Deployment)。

应用程序服务器从各种 WebSphere Application Server 组件的活动创建服务或活动日志文件。日志分析器用于查看服务或活动日志文件。日志分析器可以将服务或活动日志文件合并成一个日志文件。服务或活动日志文件(activity.log)是二进制文件,它位于 install_root 的 logs 目录中。不能用文本编辑器查看服务或活动日志。日志分析器工具允许您查看该文件。Log Analyzer通过比较日志文件中的错误记录与数据库中已有的记录,然后显示出所有相匹配的记录。


图8. Log Analyzer结构图


2.1.1 运行 Log Analyzer

1)更改目录至<was_home>/bin

2)运行 waslogbr 脚本文件。 此文件命名为:

waslogbr.bat(在 Windows 系统上)。

waslogbr(在 UNIX 系统上)。

此脚本必须从 install_dir/bin 目录运行。

3)当Log Analyzer 图形界面起来后,选择 文件 -> 打开

4) 浏览至包含服务或活动日志文件的目录

5) 选择服务或活动日志文件并单击打开,您应该能看到打开的activity.log。


图9 用Log Analyzer打开的activity.log


6)选择UnitOfWorkView文件夹下的一个条目,关于此条目的详细信息就会出现在右上角的面板上。


图10 关于一个条目的详细信息


7)要分析记录,右键单击左边树中的记录,从右键单击菜单选择 UnitOfWorkView,然后选择分析。

现在,任何在它们的旁边有绿色复选标记的记录都与症状数据库中的记录匹配。当您选择一个有复选标记的记录时,您将在右下窗格中看到问题的说明。


图11 关于问题的详细说明


2.1.2 更新symptom database

新版本的symptom database包含更多的通用的事件和一些错误信息,可以通过Analyzer Log下载最新的symptom database。

1)对于 WebSphere Application Server or Express, 选择 File -> Update Database -> WebSphere Application Server Symptom Database.

2) 对于 WebSphere Application Server Network 选择 File -> Update Database -> Application Server Network Deployment


图12 通过Analyzer Log下载最新的symptom database


2.2 使用收集器工具

收集器工具收集 WebSphere Application Server 安装信息,并将它打包后放在 Java 归档(JAR)文件中,您可将该文件发送给 IBM 客户支持人员以辅助确定和分析您的问题。JAR 文件的信息包括日志、属性文件、配置文件、操作系统和 Java 数据以及存在的每个必备软件及其级别。

有两种方式可以运行收集器工具。可执行收集器工具,以收集摘要数据,或通过系统收集相关文件和命令结果。 收集器工具产生确定和解决问题需要的信息的 Java 归档(JAR)文件。收集器摘要选项产生首次向 IBM 支持人员报告问题时有用的版本和其他信息的有问题的集合。

使用收集器工具有两个阶段。第一阶段是在您的 WebSphere Application Server 产品上运行收集器工具,并产生一个 Java 归档(JAR)文件。IBM 支持人员团队执行第二阶段,即分析收集器产生的 Java 归档(JAR)文件。

运行收集器以完成创建 JAR 文件(不管可能发现的任何错误)。错误可能包括缺少的文件或命令。收集器工具尽可能将大量数据收集在 JAR 文件中。

2.2.1 运行收集器工具Collector

1)以 root 或(Windows 平台中的 Administrator)身份登录系统。

2)验证 Java 1.2.2 或更高版本在路径中是可用的。 收集器程序需要运行 Java 代码。它还收集关于它在其中运行的 IBM Developer Kit, Java Technology Edition 的数据。如果在系统上有多个 Developer Kit,验证 WebSphere Application Server 产品使用的是收集器程序的路径中的那个。如果 WebSphere Application Server 使用的 Developer Kit 不可用,则将另一个 Developer Kit 放入收集器程序的路径会使您收集除有关 Developer Kit 的信息之外的所有数据。

3)验证是否所有必需的信息存在收集器程序使用的路径中,并且您不在 WebSphere Application Server 产品安装根目录中运行程序。

a. 如果此系统是 Linux 或基于 UNIX 的平台,验证路径包含:

/bin
/sbin
/usr/bin
/usr/sbin
b. 如果此系统是 Windows 平台,在路径中包含 regedit。

4)在您想启动收集器程序的位置创建工作目录。

5)使工作目录成为当前目录。 收集器程序将它的输出 JAR 文件写到当前目录。程序还在当前目录中创建和删除许多临时文件。创建工作目录来运行收集器程序避免命名冲突并使清除更简便。您不能在 WebSphere Application Server 安装目录下的目录中运行收集器工具。

6)通过从命令行输入命令 collector 来运行收集器程序。

不带附加参数地使用 collector 命令将集中显示节点数据和节点中每个服务器的数据的一个副本,并且将它们存储在单个 JAR 输出文件中。要从节点中的特定服务器收集数据,请使用命令 collector.bat/sh -servername servername,其中 servername 是服务器的名称。

注: 您需要正确地设置路径。对于 Linux 和基于 UNIX 的平台,install_root/bin 必须在路径中,以找到 collector.sh 命令。对于 Windows 平台,install_root\bin 必须在路径中,以找到 collector.bat 命令。

WebSphere Application Server 安装根目录在安装时确定。 它在 setupCmdLine.sh 文件(或在 Windows 平台上为 setupCmdLine.bat 文件)中标识。您可以输入收集器命令的全限定路径。例如,在 Windows 平台上的缺省安装中输入此命令:


c:\WebSphere\AppServer\bin\collector.bat



2.2.2 结果

收集器程序在当前目录中创建日志文件 Collector.log 和输出 JAR 文件。

JAR 文件的名称基于 Application Server 产品的主机名和软件包,其格式为:hostname-cellname-nodename-profile。

Collector.log 日志文件是 hostname-cellname-nodename-profile 文件中收集的某个文件。

2.2.3 下一步做什么

将 hostname-cellname-nodename-profile 文件发送给 IBM 支持人员进行分析。

2.2.4 分析收集器工具输出

在您的 WebSphere Application Server 产品上使用收集器工具的第一步是运行工具以将 Java 归档(JAR)文件作为输出。使用收集器工具中的第二步是分析其输出。执行此分析的首选方法是将 JAR 文件发送至 IBM Support 进行分析。

然而,如果执行您自己的分析,可以使用此主题了解 JAR 文件的内容。

您可以查看 JAR 文件中包含的文件而无需解压缩来自 JAR 文件的文件。然而,你还是可以很方便地解压缩所有文件并分别查看每个文件的内容。要解压缩文件,使用下列某个命令:

jar -xvf WASenv.jar
unzip WASenv.jar
Wasenv.jar 是收集器创建的 JAR 文件名。

JAR 文件包含:

收集器执行日志文件,Collector.log
存储的 WebSphere Application Server 文件的副本和它们的全路径
操作系统信息位于名称为 OS 的目录中
Java 信息位于名称为 JAVA 的目录中
WebSphere Application Server 信息位于名称为 WAS 的目录中
收集器 shell 脚本(或批处理文件)执行信息位于名称为 debug 的目录中
MQ 信息位于名称为 MQ 的目录中(如果您安装了 WebSphere MQ 或嵌入式消息传递功能部件)
JAR 文件清单
2.2.5 使用Collect工具的一些提示和建议:

解压缩(unzip)JAR 文件到空目录以方便地访问集中的文件和简化清除。
请检查 collector.log 文件以获取错误信息:
有些错误可能是正常或意料中的。例如,当收集器尝试集中对于特定安装不存在的文件或目录时,它记录关于缺少文件的错误信息。
非零返回码意味着收集器工具尝试运行的命令不存在。在某些情况下,这是意料中的。如果重复发生此类错误,也许的确是一个问题。
在 Linux 和基于 UNIX 的系统上,文件 OS/commands 具有所有使用过的命令的位置。如果您缺少命令输出,检查此文件查看是否找到命令。
在 Linux 和基于 UNIX 的系统上,收集器运行一些 shell 脚本。shell 脚本输出保存在 OS 目录的文件中,而相应的调试信息保存在 debug 目录中。如果缺少 shell 脚本的输出,则检查 debug 目录中的相应文件。
在存在多个安装实例的情况下,当您发出 collector 命令时,该工具根据 PATH 语句运行。例如,如果您在同一台机器上安装了 Base WebSphere Application Server 和 Deployment Manager 产品,在 PATH 变量中首先出现的 bin 目录是提供给收集器工具的那个目录。要解决此问题,当调用收集器工具时使用标准文件路径,如 Windows 平台的示例是:c:\WebSphere\AppServer\bin\collector.bat
在 Windows 系统上,OS 目录包含名为 installed.out 的文件。此文件包含"添加/删除程序"列表中找到的程序列表。与此相同的信息包含在 Desktop\My Computer\Control Panel\Add/Remove Programs\Install/Uninstall 文件中。
2.2.6 收集器摘要

从 V5.0.2 开始,WebSphere Application Server 产品包括了对收集程序工具的增强,称为收集程序摘要选项。

收集程序摘要选项可帮助您与 IBM 支持人员中的 WebSphere Application Server 技术人员进行沟通。运行带有 -Summary 选项的收集程序工具产生一个有问题的文本文件和运行不带有 -Summary 参数的该工具产生 Java 归档(JAR)文件中一些信息的控制台版本。在计划寻求 IBM 支持人员的帮助前,您可以使用收集程序摘要选项检索基本配置和必备软件级信息。

收集程序摘要选项产生 WebSphere Application Server 产品和操作系统的版本信息,以及其它的信息。它将信息存储在 Collector_Summary.txt 文件中,并将其写到控制台。您可以使用这些信息回答 IBM 技术支持人员的初始问题,或直接将 Collector_Summary.txt 文件发送至 IBM 技术支持人员。

运行 collector 命令创建 JAR 文件(如果 IBM Support 需要更多信息以解决您的问题)。

要运行收集器摘要选项,在 WebSphere Application Server 产品安装根目录以外的临时目录启动,并输入下列命令之一。

Linux 和基于 UNIX 的平台:


install_root/bin/collector.sh -Summary



Windows 平台:


install_root\bin\collector.bat -Summary



2.3 首个故障数据捕捉First Failure Data Capture (FFDC)

首个故障数据捕捉工具保存由处理故障生成的信息,并将控制权返回受影响的引擎。捕捉到的数据保存在日志文件中,以供分析问题时使用。

首个故障数据捕捉工具主要是由 IBM 技术支持人员使用。它作为 IBM WebSphere Application Server 的一部分运行,并且您无法启动或停止它。建议您不要尝试配置首个故障数据捕捉工具。如果您遇到了一些需要您与 IBM技术支持人员联系的情况,您的 IBM 服务代表将辅助您阅读和分析首个故障数据捕捉日志。

首个故障数据捕捉工具不影响 IBM WebSphere Application Server 的性能。在<was_home>/properties目录下,有三个文件属性文件用来控制FFDC的过滤功能:

ffdcStart.properties,用在当Server正在启动的时候

ffdcRun.properties, 用在当Server启动起来的时候

ffdcStop.properties, 用在当Server正在停止的时候

捕捉到的数据将会被自动的保存在<profile_home>/logs/ffdc目录下,以便我们分析问题的时候所用,也可以被Collector工具所收集。

2.4 转储名称空间中的内容

命名是将对资源(如连接池、enterprise bean 和消息侦听器等)的访问权发布和提供给客户机进程。如果当您访问在其它方面仿佛是健康的资源时发生问题,则可能涉及命名服务。要查找 WebSphere Application Server 命名服务的问题,请遵循以下的步骤:

1)浏览您正在尝试访问的资源的服务器的 JVM 日志。以 NMSV 开始的消息与命名服务相关。

2)在您尝试访问的资源的服务器上,从服务日志打开日志分析器,并使用它浏览错误和警告消息。

3)在 WebSphere Application Server 运行时,运行 dumpNameSpace 命令(对于 Windows 系统)或 dumpNameSpace.sh 命令(对于 UNIX 系统),并输送、重定向或"增加"输出,以便可容易地查看它。此命令导致显示 WebSphere Application Server 名称空间中的对象,包含目录路径和对象名。

dumpNameSpace 命令不转储分布式名称空间中的所有对象。它仅转储运行此命令的进程的本地名称空间中的对象。

您可以使用 dumpNameSpace 工具转储通过名称服务器访问的名称空间的内容。dumpNameSpace 工具是基于 Java 命名与目录接口(JNDI)。

您在运行 dumpNameSpace 工具时,命名服务必须是活动的。dumpNameSpace 工具无法将名称空间本地地转储到服务器进程,例如,具有 java: URL 方案和 local: URL 方案的那些名称空间。local: 名称空间包含对具有本地接口的 Enterprise bean 的引用。

您可以从命令行或使用它的程序界面运行该工具。

要从命令行运行该工具,在 WebSphere/AppServer/bin 目录上输入以下命令:

对于UNIX平台,运行 dumpNameSpace.sh

对于Windows平台,运行 dumpNameSpace

如果您在启用安全性的情况下运行 dumpNameSpace 工具,则会显示登录提示。如果取消登录提示,dumpNameSpace 工具将用"UNAUTHENTICATED"凭证继续运行。因此,缺省情况下,使用"UNAUTHENTICATED"凭证与使用"Everyone"访问授权策略是相同的。您可以通过将 /properties/sas.client.props 文件中的 com.ibm.CSI.performClientAuthenticationRequired 属性值更改为 true 修改此缺省设置。如果您将此属性更改为 true,则重新运行 dumpNameSpace 工具并取消登录提示;授权失败并且命令不会继续运行。

可以利用 dumpNameSpace -? 命令来查看dumpNameSpace工具的使用

2.4.1 示例:调用名称空间转储工具

这通常对于查看名称空间的转储以理解命名操作失败的原因有帮助。您可以从命令行或程序调用名称空间转储工具。下面是每个选项的示例。

从命令行调用名称空间转储工具

通过输入下列任一命令,从命令行调用名称空间转储工具:


dumpNameSpace -host myhost.mycompany.com -port 901



或:


dumpNameSpace -url corbaloc:iiop:myhost.mycompany.com:901



有若干可供选择的命令行选项。要获取选项的帮助,输入下列任一命令:


DumpNameSpace -help



或:


dumpNameSpace ?



2.4.2 从 Java 程序调用名称空间转储工具

您可以从具有 com.ibm.websphere.naming.DumpNameSpace API 的程序转储名称空间。参阅 WebSphere Application Server API 文档,以获取有关 DumpNameSpace 程序接口的详细信息。

下面的示例说明如何从 Java 程序调用名称空间转储工具:



{
   ...
   import javax.naming.Context;
   import javax.naming.InitialContext;
   import com.ibm.websphere.naming.DumpNameSpace;
   ...
   java.io.PrintStream filePrintStream = ...
   Context ctx = new InitialContext();
   // Starting context for dump
   ctx = (Context) ctx.lookup("cell/nodes/node1/servers/server1");
   DumpNameSpace dumpUtil =
      new DumpNameSpace(filePrintStream, DumpNameSpace.SHORT);
   dumpUtil.generateDump(ctx);
   ...
}



2.4.3名称空间转储样本输出

名称空间转储输出与以下示例相似,该示例的格式为 SHORT 转储格式:



Getting the initial context
Getting the starting context

==============================================================================
Name Space Dump
   Provider URL: corbaloc:iiop:localhost:9810
   Context factory: com.ibm.websphere.naming.WsnInitialContextFactory
   Requested root context: cell
   Starting context: (top)=outpostNetwork
   Formatting rules: jndi
   Time of dump: Mon Sep 16 18:35:03 CDT 2002
==============================================================================


==============================================================================
Beginning of Name Space Dump
==============================================================================

    1 (top)                                         
    2 (top)/domain                                   javax.naming.Context
    2    Linked to context: outpostNetwork
    3 (top)/cells                                    javax.naming.Context
    4 (top)/clusters                                 javax.naming.Context
    5 (top)/clusters/Cluster1                        javax.naming.Context
    6 (top)/cellname                                 java.lang.String
    7 (top)/cell                                     javax.naming.Context
    7    Linked to context: outpostNetwork
    8 (top)/deploymentManager                        javax.naming.Context
    8    Linked to URL: corbaloc::outpost:9809/NameServiceServerRoot
    9 (top)/nodes                                    javax.naming.Context
   10 (top)/nodes/will2                              javax.naming.Context
   11 (top)/nodes/will2/persistent                   javax.naming.Context
   12 (top)/nodes/will2/persistent/SomeObject        SomeClass
   13 (top)/nodes/will2/nodename                     java.lang.String
   14 (top)/nodes/will2/domain                       javax.naming.Context
   14    Linked to context: outpostNetwork
   15 (top)/nodes/will2/cell                         javax.naming.Context
   15    Linked to context: outpostNetwork
   16 (top)/nodes/will2/servers                      javax.naming.Context
   17 (top)/nodes/will2/servers/server1              javax.naming.Context
   18 (top)/nodes/will2/servers/will2                javax.naming.Context
   19 (top)/nodes/will2/servers/member2              javax.naming.Context
   20 (top)/nodes/will2/node                         javax.naming.Context
   20    Linked to context: outpostNetwork/nodes/will2
   21 (top)/nodes/will2/nodeAgent                    javax.naming.Context
   22 (top)/nodes/outpost                            javax.naming.Context
   23 (top)/nodes/outpost/node                       javax.naming.Context
   23    Linked to context: outpostNetwork/nodes/outpost
   24 (top)/nodes/outpost/nodeAgent                  javax.naming.Context
   24    Linked to URL: corbaloc::outpost:2809/NameServiceServerRoot
   25 (top)/nodes/outpost/persistent                 javax.naming.Context
   26 (top)/nodes/outpost/nodename                   java.lang.String
   27 (top)/nodes/outpost/domain                     javax.naming.Context
   27    Linked to context: outpostNetwork
   28 (top)/nodes/outpost/servers                    javax.naming.Context
   29 (top)/nodes/outpost/servers/server1            javax.naming.Context
   30 (top)/nodes/outpost/servers/server1/url        javax.naming.Context
   31 (top)/nodes/outpost/servers/server1/url/CatalogDAOSQLURL
   31                                                java.net.URL
   32 (top)/nodes/outpost/servers/server1/mail       javax.naming.Context
   33 (top)/nodes/outpost/servers/server1/mail/PlantsByWebSphere
   33                                                javax.mail.Session
   34 (top)/nodes/outpost/servers/server1/TransactionFactory
   34                        com.ibm.ejs.jts.jts.ControlSet$LocalFactory
   35 (top)/nodes/outpost/servers/server1/servername java.lang.String
   36 (top)/nodes/outpost/servers/server1/WSsamples  javax.naming.Context
   37 (top)/nodes/outpost/servers/server1/WSsamples/TechSampDatasource
   37                                                TechSamp
   38 (top)/nodes/outpost/servers/server1/thisNode   javax.naming.Context
   38    Linked to context: outpostNetwork/nodes/outpost
   39 (top)/nodes/outpost/servers/server1/cell       javax.naming.Context
   39    Linked to context: outpostNetwork
   40 (top)/nodes/outpost/servers/server1/eis        javax.naming.Context
   41 (top)/nodes/outpost/servers/server1/eis/DefaultDatasource_CMP
   41                                                Default_CF
   42 (top)/nodes/outpost/servers/server1/eis/WSsamples  javax.naming.Context
   43 (top)/nodes/outpost/servers/server1/eis/WSsamples/TechSampDatasource_CMP
   43                                                TechSamp_CF
   44 (top)/nodes/outpost/servers/server1/eis/jdbc   javax.naming.Context
   45 (top)/nodes/outpost/servers/server1/eis/jdbc/PlantsByWebSphereDataSource_CMP
   45                                                PLANTSDB_CF
   46 (top)/nodes/outpost/servers/server1/eis/jdbc/petstore
   46                                                javax.naming.Context
   47 (top)/nodes/outpost/servers/server1/eis/jdbc/petstore/PetStoreDB_CMP
   47                                                PetStore_CF
   48 (top)/nodes/outpost/servers/server1/eis/jdbc/CatalogDB_CMP
   48                                                Catalog_CF
   49 (top)/nodes/outpost/servers/server1/jta        javax.naming.Context
   50 (top)/nodes/outpost/servers/server1/jta/usertransaction
   50                                                java.lang.Object
   51 (top)/nodes/outpost/servers/server1/DefaultDatasource
   51                                                Default Datasource
   52 (top)/nodes/outpost/servers/server1/jdbc       javax.naming.Context
   53 (top)/nodes/outpost/servers/server1/jdbc/CatalogDB CatalogDB
   54 (top)/nodes/outpost/servers/server1/jdbc/petstore  javax.naming.Context
   55 (top)/nodes/outpost/servers/server1/jdbc/petstore/PetStoreDB
   55                                                PetStoreDB
   56 (top)/nodes/outpost/servers/server1/jdbc/PlantsByWebSphereDataSource
   56                                                PLANTSDB
   57 (top)/nodes/outpost/servers/outpost            javax.naming.Context
   57    Linked to URL: corbaloc::outpost:2809/NameServiceServerRoot
   58 (top)/nodes/outpost/servers/member1            javax.naming.Context
   59 (top)/nodes/outpost/cell                       javax.naming.Context
   59    Linked to context: outpostNetwork
   60 (top)/nodes/outpostManager                     javax.naming.Context
   61 (top)/nodes/outpostManager/domain              javax.naming.Context
   61    Linked to context: outpostNetwork
   62 (top)/nodes/outpostManager/cell                javax.naming.Context
   62    Linked to context: outpostNetwork
   63 (top)/nodes/outpostManager/servers             javax.naming.Context
   64 (top)/nodes/outpostManager/servers/dmgr        javax.naming.Context
   64    Linked to URL: corbaloc::outpost:9809/NameServiceServerRoot
   65 (top)/nodes/outpostManager/node                javax.naming.Context
   65    Linked to context: outpostNetwork/nodes/outpostManager
   66 (top)/nodes/outpostManager/nodename            java.lang.String
   67 (top)/persistent                               javax.naming.Context
   68 (top)/persistent/cell                          javax.naming.Context
   68    Linked to context: outpostNetwork
   69 (top)/legacyRoot                               javax.naming.Context
   69    Linked to context: outpostNetwork/persistent
   70 (top)/persistent/AnotherObject                 AnotherClass

==============================================================================
End of Name Space Dump
==============================================================================




2.5 IBM Support Assistant

IBM Support Assistant 是一个工具,它可帮助您使用 WebSphere Application Server 管理控制台中的各种 IBM Support 资源。 IBM Support Assistant 提供三个组件来帮助您解决软件方面的问题:

搜索组件,它帮助您访问多个位置的相关支持信息
支持链接组件,它提供访问各种 IBM Web 资源(如 IBM 产品站点、IBM 支持站点和到 IBM 新闻组的链接)的便利位置。
服务组件,它帮助您向 IBM 提交包括键控系统数据的增强服务请求。
要下载 IBM Support Assistant:

1. 登录到管理控制台并从顶部菜单选择支持。这会打开产品支持页面,从该页面您可以下载 IBM Support Assistant,还可访问各种 IBM Web 资源(如 IBM 产品站点、IBM 支持站点和到 IBM 新闻组的链接)。

2. 选择"单击此处以下载 IBM Support Assistant"下载此工具并按照自述文件中的指示信息安装此工具。

一旦在管理控制台中安装 IBM Support Assistant,您就可以通过从管理控制台中的顶部菜单选择"支持"来启动它。将在新浏览器窗口中显示 IBM Support Assistant 的搜索组件。

要了解关于如何使用 IBM Support Assistant 的更多信息,单击 IBM Support Assistant 窗口中的 User Guide 选项卡。

注: 管理控制台中的"支持"链接是上下文件相关的链接。当未安装 IBM Support Assistant 时,"支持"链接显示 到 IBM Support Assistant 下载页面和 WebSphere Application Server 产品的各种 IBM Web 资源的链接。一旦安装 IBM Support Assistant,"支持"链接就可以启动 IBM Support Assistant 主页面。






回页首




3. 故障诊断的其它相关资源

除了上面介绍的故障诊断的资源和工具外,还有几个基于 Web 的资源可用于研究和解决与 WebSphere Application Server 相关的问题。

3.1 WebSphere Application Server 支持页面

提供关于 WebSphere Application Server 问题的工具和共享知识的正式站点。在它提供的功能部件之间是:

搜索字段 - 用于搜索整个支持站点以获得与特定异常、错误消息或其他问题相关的文档和修正。直接联系 IBM Support 前使用此搜索功能。
提示和技巧、技术和解决方案链接带领您到由 WebSphere Application Server 技术支持人员制订的特定问题和解决方案。
链接所有修订、修订包、更新包和工具提供免费的 WebSphere Application Server 维护升级和问题确定工具。 o 修订是软件补丁,它处理特定的 WebSphere Application Server 缺陷。从所有修订、修订包、更新包和工具页面中的列表选择一个特定缺陷,您就会看到修订所针对的问题的描述。 o 修订包是多个修订的累积,一起经过测试并且发行以作为对 WebSphere Application Server 的维护升级。更新包是也包含新功能的修订包。如果您从此页面选择修订包,则会把您带到描述目标平台、WebSphere Application Server 先决条件级别和其他相关信息的页面 。选择该页面上的列出缺陷链接以显示修订包包括的修订列表。如果您要安装作为修订包一部分的修订,则通常最好升级到完整的修订包而不只是安装个别的修订。 o 工具是免费的程序,帮助您分析您的 WebSphere Application Server 安装的配置、行为和性能。
3.2 访问 WebSphere Application Server 支持页面资源

WebSphere Application Server 支持页面上的某些资源用钥匙图标标记。要访问这些资源,必须提供用户标识 和密码,或者,如果尚没有识别,则进行注册。注册时,会向您要求合同号,它是作为 WebSphere Application Server 购买的部件而提供的。

3.3 developerWorks WebSphere 专区

developerWorks WebSphere 专区是 IBM 支持的站点,用于使开发者能够了解有关 IBM 软件产品及如何使用它们。 它们包含资源,如文章、教程和到新闻组与用户组的链接。您可以访问 WebSphere 开发者园地。

3.4 IBM Support 页面

IBM Support 拥有的文档可节省您收集解决此问题所需信息的时间。在打开 PMR 前,请参阅 IBM Support 页 面。






回页首




总结

WebSphere Application Server 包括设计来帮助您隔离问题源的许多故障诊断工具。这篇文章提供了如何对 WebSphere Application Server 问题进行故障诊断的相关工具和一些资源的介绍.




关于作者



  何利兵,CA中国技术中心(CTC)的软件测试工程师,DB2认证专家,我所感兴趣的技术领域包括WebSphere,数据库管理系统,软件测试技术, 存储备份领域。您可以通过 Libing.He@ca.com 和我联系。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics