在发生weblogic故障时,需维护好现场,并收集以下相关信息:
一、WLS服务器网络情况:收集ping、telnet、netstat等信息
1)位于一个Domain中的各个服务器是否能够联通
ping命令检查网络是否可达
telnet测试映射端口或远程访问主机
2)Weblogic 服务器与数据库服务器的链接是否畅通
3)集群环境的多播通信是否正常
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
netstat -a列出所有端口
netstat -l只显示监听端口
netstat -r显示核心路由信息
二、WLS硬件服务器资源使用情况:收集top/topas、df、du等信息
检查系统CPU、内存和I/O 等使用是否异常。如果负载不大的情况下,CPU是否一直居高不下,内存占用和I/O是否一直很大。
三、WLS server日志文件:收集access、server、domain日志信息
1、server_name.log
该日志记录的是服务(包括Admin Server 和Managed Server)启动过程中和关闭过程中的日志,还包括部署在服务上面的应用运行过程中产生的日志。
路径为 DOMAIN_NAME/servers/SERVER_NAME/logs/server_name.log
2、access.log
该文件具体记录在某个时间、某个IP地址的客户端访问服务器上的那个文件。
路径为DOMAIN_NAME/servers/SERVER_NAME/logs/access,log
3、domain_name.log
记录一个Domain的运行情况。被管服务器把运行信息发给管理服务器,管理服务器将其写入Domain日志中。
路径为DOMAIN_NAME/servers/ADMIN_SERVER_NAME/logs/domain_name.log
备注:DOMAIN_NAME 是在其中定位域的目录的名称,ADMIN_SERVER_NAME是管理服务器的名称,而SERVER_NAME是被管服务器的名称
四、WLS gc文件:该时间段verbosegc信.(添加-verbose:gc参数)
GC.log记录服务的内存垃圾回收情况。该日志默认情况下并不生成。如果需要生成该日志,需要在启动服务的脚本中指定垃圾回收日志文件的路径和名称,也可以在域目录下的setDomainEnv.sh 或者 wls_home下的commEnv.sh中指定
例:WebLogic打开GC日志的方法:在setDomainEnv.cmd 中设置
set JAVA_OPTIONS=%JAVA_OPTIONS% -verbose:gc -Xloggc:log\gc.log -XX:+PrintGC
五、WLS server线程快照:.该时间点的threddump文件(kill -3操作)
Thread dump 是把Java进程中所有线程的运行状况输出到指定文件中。Thread Dump 生成结果中包括各个线程的运行状态、标识和调用的堆栈;调用的堆栈包括完整的类名、所执行的方法,如果可能的话还有源代码的行数。
l 在 unix, linux和 MacOS 环境中,
在控制台中敲: Ctrl-\,或者,用 “kill -3 <pid>” ,或者 “kill – QUIT <pid>”。 Pid是用所关注的 JAVA进程号,您可以用 “ps -ef grep java” 找到,或者使用 JDK 5.0中的 “jps -v” 命令获得。(kill -3 <pid> 该命令会直接将线程快照显示在控制台上,注意一定要谨慎, 一步不慎就可能让服务器进程被杀死!)
l 在各个操作系统平台,都可以用 JDK 自带命令行工具包中的 jstack <pid> 。 (进入到jdk安装目录bin下,使用 ./jstack <pid> > dump.txt 可以线程快照重定向到文件中)
六、Heap dump的获取
Java Heap是所有类实例和数组对象分配的一个运行时数据区。当JVM中对象过多,Java堆内存耗尽时,就可能会触发产生Heap dump文件。