-
中间件故障诊断总结
一、
步骤:
1
、
准确描述现象:客户说的和自己查看到的:平台、版本、操作、信息等。特
别是,故障前
是否有做过什么操作:网络调整、设备调整、主机参数调整、配置
文件修改??反正将这
一切都列入排查的对象。
2
、使用工
具收集数据,收集配置文件、日志、
dump
文件等等。
3
、
使用分析数据,根据问题或收集的数据,使用适当的工具分析数据,当然包
括了在网上和在官方支持站点搜索类似的问题的解决办法。
4
、
尝试解
决问题,根据找到的问题点,尝试解决。如修改错的,复原正确的;
运行有问题的,适当
调整运行的环境和运行的参数等等。
5
、
给出最佳解决方案,一般就是继续观察了。
6
、总结经验并加以重用,知识积累。
二、
通过前台收集基本的信息:
1
、重点是故障前做过的操作
2
、比对运行平台是否在官方的兼容性列表中,一般就是关注各个版本
,特别是
一些比较怪异的问题
3
p>
、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制
台
的
格
式
是
http://ip
地
址
:
端
口
/conso
le
如
:
h
ttp://192.168.0.89:7001/console/
。常用的留意点
如下:
A
、
域运行状态(域
-
监视
-
健康状况)
;一般为
run
ning
状态,如果不是
running
,那这些界面就没有了。
B
、
服务器
运行状态(域
-
环境
-
服务器)
,正常的为
running
< br>。
C
、
各个<
/p>
server
性能(
JVM
)状态(域
-
环境
-
服务器,点击具体的
serve
后
进入,监视
-
健康状况)
;
留意
JVM
堆中当前可用的内存量。
不同的
JVM
,所显示的内容可能不一样,以下
为
sun
的:
D
、
p>
各个
server
线程状态
(域
-
环境
-
服务器,
点击具体的
serve
后进入,
监
视
-
线程)
;一般来说,空闲线程要多;健康状况为
ok
如下图
h
ealth
状态为:
Warning
,
这个是有线程阻塞的
。
阻塞线程的内容为:
####<2011-8-13
上午
02
时
42
分
35
秒
GMT+08:00>
't (self-tuning)'> <
<13>
't
(self-tuning)' has been busy for
seconds working on the request
which is more than the
configured time (StuckThreadMaxTime) of
seconds. Stack trace:
Write0(Native Method)
Write(:97)
(:141)
(Unknown
Source)
E
、
JDB
C
(域
-
环境
-
服务器,点击具体的
serve
后进
入,监视
-JDBC
)
;活动
连接数合理。
F
、
程序
EJB/Web Module
(
域
-
部署)
;状态为活动,健康状况为
ok
。
其目标关联正确
G
、
p>
JMS
(域
-
服务
-
消息传送
-JMS
< br>服务器)
;健康状态为
ok
。<
/p>
4
、在控制台生成
dump
;生成
Dump Thread Stacks
内容;查找
queryList
等关
键字符,即可快速定位问题代码。
p>
5
、如果控制台打不开或无法进入,就要先看进程有没有在跑,如果进程有,但
控制台或程序无法进入,
一般就是有故障了,
此时,
可以通过相关日志进行后台
分析分析。
三、
后台日志分析:
一般来说,新建立的
环境,配置的问题多一点;已经运行的生成系统错误或
bug
的
可能性大点。当出现故障时,就可以调取系统日志、中间件的日志,根据相关
关键字(<
/p>
BEA-
)网上搜索,或到官方网站对相关问题的描述进行查找。
WebLogic
在启动及运行过程
中会记录各种
LOG
信息,以帮助系统治理员对整个
应用系统进行治理及维护。
1
< br>、
log
默认位置
..
user_projectsdomains
your_domain
serversAdminServerlogs
下面
的
;;
domain_
name
.log
新版的如:
p>
C:OracleMiddlewareuser_projectsdomainsbas
e_domainserversAdm
inServerlogs
如果是重定向输出的,就看重定向输出的文件。
2
、日志文件说明
WebLogic
SERVER
运行日志
假如
WebLogic
SERVER
在启动或运行过程中有错误发生,错误信息会显示在屏幕
上,并
且会记录在一个
LOG
文件中,该文件默认名为
。该文件
也记录
WebLog
ic
的启动及关闭等其他运行信息。可在
Gernal
属性页中设置该文
件的路径及名字,错误的输出的等级等。
HTTP
访问日志
<
/p>
在
WebLogic
中可以对用
HTTP
,
HTTPS
协议访问的服务器上的文件都做记录,该
LOG
文件默认的名字
为
,
内容如下,该文件具体记录在某个时间,某
个
IP
地址的客户端访问了服务器上的那个文件。
p>
127.0.0.1 - -
[25/Feb/2002:11:35:58 +0800]
0
127.0.0.1 - - [25/Feb/2002:11:35:58
+0800]
HTTP/1.1
HTTP
访问日志的属性可在
HTTP
属性页中进行设置。
DOMAIN
运行日志
记录一个
DOMIAN
的运行情况,一个
DOMAIN
中的各个
WebLogic
p>
SERVER
可以把它
们的一些运行信息<
/p>
(比如:很严重的错误)
发送给一个
DO
MAIN
的
ADMINISTRATOR
SERVER
上,
ADMINISTRATOR
SERVER
把这些信息些到
DOMAIN
< br>日志中。默认名
为:
domain_name
.log
。一般就看这个最多。
3
、通过控制台查看或修改系统日志路径
登录
weblogic
后台
左侧菜单:
Environment->Servers
右侧菜单:
AdminServer(admin)->log
ging
只找到
、
配置
如图
:
4
、其他
如
果日志太少,
里面没有记载相关信息,
可参照日志文件的回滚设
置。
在
“滚
动类型
:
”属性页中可以设置这些日志文件的回滚方式,当日志文件到一定得大
小或过了设定的时间后,把日志信息保存到一个新的文件中。
WebLog
ic
提供按
文件大小和时间两种方式。如下面的设置种,选择<
/p>
Rotation Type
为
BY
SIZE
。
也就是当日志文件的大小达到
500K
时,重新写一个新的文件。假如
Rotation
Type
为
BY TIME
,那么是每隔一段时间重新写一个新的文件。并且对这些文件
编号设置日
志文件名如:
_%yyyy%_%MM%_%dd%_%hh%_%mm%
5
、日志的处理:查看日志中输出的具体内容,再进行处理。如:
BEA-
下面是一个线程阻塞的一个信息
####<2011-8-13
上午
03
时
51
分
46
秒
GMT+08:00>
't (self-tuning)'> <
<12>
't (self-
tuning)' has been busy for
seconds
working on the
request
which is more than
the configured time (StuckThreadMaxTime) of
seconds. Stack trace:
四、
产生
hread
Dump
来分析问题
hread D
ump
是非常有用的诊断
Java
应用
问题的工具,每一个
Java
虚拟机都有
及时生成显示所有线程在某一点状态的
thread-dump
的能力。虽然各个
Java
虚
拟机<
/p>
thread
dump
打印输出格式上略微有一些不同,但是
Thread
dumps
出来的
信息包含线程;
线程
的运行状态、
标识和调用的堆栈;
调用的堆栈包含完整的类
p>
名,所执行的方法,如果可能的话还有源代码的行数。
Thread Dump
特点:
能在各种操作系统下使用
?
能在各种
Java
应用服务器下使用
?
可以在生产环境下使用而不影响系统的性能
?
可以将问题直接定位到应用程序的代码行上
?
Thread
Dump
能诊断的问题包括:
查找内
存泄露,常见的是程序里
load
大量的数据到缓存
?
发现死锁线程
?
收集
Thread Dump
进行
Thread Dump
的方法取决于安装挂起服务器实例的操作系统。有关
在不同的操作系统上进行
Thread Dump
的信息,
?
Solaris OS
’
’
(Control
-Backslash)
kill
-QUIT
Linux
Linux
操作系统查看线程的方式不同于其它操作系统。<
/p>
该操作系统将每个线程视