weblogic日常维护总结与故障诊断Word下载.doc
《weblogic日常维护总结与故障诊断Word下载.doc》由会员分享,可在线阅读,更多相关《weblogic日常维护总结与故障诊断Word下载.doc(20页珍藏版)》请在冰豆网上搜索。
3、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制台的格式是http:
//ip地址:
端口/console如:
http:
//192.168.0.89:
7001/console/。
常用的留意点如下:
A、域运行状态(域-监视-健康状况);
一般为running状态,如果不是running,那这些界面就没有了。
B、服务器运行状态(域-环境-服务器),正常的为running。
C、各个server性能(JVM)状态(域-环境-服务器,点击具体的serve后进入,监视-健康状况);
留意JVM堆中当前可用的内存量。
不同的JVM,所显示的内容可能不一样,以下为sun的:
D、各个server线程状态(域-环境-服务器,点击具体的serve后进入,监视-线程);
一般来说,空闲线程要多;
健康状况为ok
如下图health状态为:
Warning,这个是有线程阻塞的。
阻塞线程的内容为:
####<
2011-8-13上午02时42分35秒GMT+08:
00>
<
Error>
WebLogicServer>
dataweb1>
dc_admin1>
[ACTIVE]ExecuteThread:
'
15'
forqueue:
weblogic.kernel.Default(self-tuning)'
>
<
WLSKernel>
1313174555613>
BEA-000337>
[STUCK]ExecuteThread:
19'
hasbeenbusyfor"
2,492"
secondsworkingontherequest"
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl@12035ed"
whichismorethantheconfiguredtime(StuckThreadMaxTime)of"
2,400"
seconds.Stacktrace:
.SocketOutputStream.socketWrite0(NativeMethod)
.SocketOutputStream.socketWrite(SocketOutputStream.java:
97)
.SocketOutputStream.write(SocketOutputStream.java:
141)
.ns.DataPacket.send(UnknownSource)
E、JDBC(域-环境-服务器,点击具体的serve后进入,监视-JDBC);
活动连接数合理。
F、程序EJB/WebModule(域-部署);
状态为活动,健康状况为ok。
其目标关联正确
G、JMS(域-服务-消息传送-JMS服务器);
健康状态为ok。
4、在控制台生成dump;
生成DumpThreadStacks内容;
查找queryList等关键字符,即可快速定位问题代码。
5、如果控制台打不开或无法进入,就要先看进程有没有在跑,如果进程有,但控制台或程序无法进入,一般就是有故障了,此时,可以通过相关日志进行后台分析分析。
三、后台日志分析:
一般来说,新建立的环境,配置的问题多一点;
已经运行的生成系统错误或bug的可能性大点。
当出现故障时,就可以调取系统日志、中间件的日志,根据相关关键字(BEA-)网上搜索,或到官方网站对相关问题的描述进行查找。
WebLogic在启动及运行过程中会记录各种LOG信息,以帮助系统治理员对整个应用系统进行治理及维护。
1、log默认位置
..\user_projects\domains\your_domain\servers\AdminServer\logs下面的AdminServer.log;
access.log;
domain_name.log
新版的如:
C:
\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\logs
如果是重定向输出的,就看重定向输出的文件。
2、日志文件说明
WebLogicSERVER运行日志
假如WebLogicSERVER在启动或运行过程中有错误发生,错误信息会显示在屏幕上,并且会记录在一个LOG文件中,该文件默认名为AdminServer.log。
该文件也记录WebLogic的启动及关闭等其他运行信息。
可在Gernal属性页中设置该文件的路径及名字,错误的输出的等级等。
HTTP访问日志
在WebLogic中可以对用HTTP,HTTPS协议访问的服务器上的文件都做记录,该LOG文件默认的名字为Access.log,内容如下,该文件具体记录在某个时间,某个IP地址的客户端访问了服务器上的那个文件。
127.0.0.1--[25/Feb/2002:
11:
35:
58+0800]"
GET/weatherHTTP/1.1"
3020
GET/weather/index.HtmlHTTP/1.1"
200176
HTTP访问日志的属性可在HTTP属性页中进行设置。
DOMAIN运行日志
记录一个DOMIAN的运行情况,一个DOMAIN中的各个WebLogicSERVER可以把它们的一些运行信息(比如:
很严重的错误)发送给一个DOMAIN的ADMINISTRATORSERVER上,ADMINISTRATORSERVER把这些信息些到DOMAIN日志中。
默认名为:
domain_name.log。
一般就看这个最多。
3、通过控制台查看或修改系统日志路径
登录weblogic后台
左侧菜单:
Environment->
Servers
右侧菜单:
AdminServer(admin)->
logging
只找到examplesServer.log、access.log
配置
如图:
4、其他
如果日志太少,里面没有记载相关信息,可参照日志文件的回滚设置。
在“滚动类型:
”属性页中可以设置这些日志文件的回滚方式,当日志文件到一定得大小或过了设定的时间后,把日志信息保存到一个新的文件中。
WebLogic提供按文件大小和时间两种方式。
如下面的设置种,选择RotationType为BYSIZE。
也就是当日志文件的大小达到500K时,重新写一个新的文件。
假如RotationType为BYTIME,那么是每隔一段时间重新写一个新的文件。
并且对这些文件编号设置日志文件名如:
_%yyyy%_%MM%_%dd%_%hh%_%mm%
5、日志的处理:
查看日志中输出的具体内容,再进行处理。
如:
BEA-
下面是一个线程阻塞的一个信息
2011-8-13上午03时51分46秒GMT+08:
11'
1313178706712>
1'
2,503"
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl@deab5f"
四、产生hreadDump来分析问题
hreadDump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力。
虽然各个Java虚拟机threaddump打印输出格式上略微有一些不同,但是Threaddumps出来的信息包含线程;
线程的运行状态、标识和调用的堆栈;
调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。
ThreadDump特点:
·
能在各种操作系统下使用
能在各种Java应用服务器下使用
可以在生产环境下使用而不影响系统的性能
可以将问题直接定位到应用程序的代码行上
ThreadDump能诊断的问题包括:
查找内存泄露,常见的是程序里load大量的数据到缓存
发现死锁线程
收集ThreadDump
进行ThreadDump的方法取决于安装挂起服务器实例的操作系统。
有关在不同的操作系统上进行ThreadDump的信息,
SolarisOS
ctrl>
-’\’(Control-Backslash)
kill-QUIT<
pid>
Linux
Linux操作系统查看线程的方式不同于其它操作系统。
该操作系统将每个线程视为一个进程。
若要在Linux上进行ThreadDump,查找通过其启动所有其它进程的进程ID。
使用命令:
若要获得根PID,使用:
ps-efHl|grep'
java'
**.**
使用一个作为字符串的grep参数(可在与服务器启动命令匹配的进程堆栈中找到该字符串)。
如果ps命令还没有管道传送到另一个例程,则报告的第一个PID将是根进程。
IBMAIX
在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。
执行kill-3<
命令可以生成javacore文件和heapdump文件(pid为wasjava进程的id号,可以用ps-ef|grepjava查到),可以多执行几次。
有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件,用"
n