Ubuntu环境下WebLogic故障排查指南
日志是故障排查的核心依据,WebLogic的日志文件集中存储在**$DOMAIN_HOME/logs**目录下($DOMAIN_HOME为域根目录,可通过echo $DOMAIN_HOME确认),关键日志包括:
查看日志的常用命令:
tail -f $DOMAIN_HOME/logs/server.log;grep -i 'error' $DOMAIN_HOME/logs/server.log;vi $DOMAIN_HOME/logs/server.log(需掌握vi基本操作)。WebLogic的配置文件错误是常见故障原因,需重点检查以下文件:
检查要点:
netstat -tulnp | grep <端口号>命令);JAVA_HOME)设置正确(指向有效的JDK安装路径,可通过echo $JAVA_HOME验证)。WebLogic默认使用7001(HTTP)、7002(HTTPS)等端口,若这些端口被其他应用(如Apache、Nginx、其他WebLogic实例)占用,会导致启动失败。
排查步骤:
netstat -tulnp | grep <端口号>(如netstat -tulnp | grep 7001),查看端口占用进程;$DOMAIN_HOME/config/config.xml中的<listen-port>标签,重启服务器;kill -9 <进程ID>(需谨慎操作,避免影响其他服务)。内存不足或配置不当(如堆内存过小)会导致OutOfMemoryError(OOM),表现为服务器启动缓慢、应用响应延迟或崩溃。
排查与解决步骤:
$DOMAIN_HOME/bin/startWebLogic.sh,找到JAVA_OPTIONS参数(如-Xms512m -Xmx1024m,分别表示初始堆大小和最大堆大小);-Xms2g -Xmx4g);jmap生成堆转储文件(jmap -dump:format=b,file=/tmp/heap.hprof <pid>),再用**Memory Analyzer(MAT)**工具分析内存占用情况,定位泄漏点(如未关闭的数据库连接、缓存未清理)。确认WebLogic服务是否正常运行,以及进程是否存在异常。
常用命令:
ps -ef | grep weblogic(若进程不存在,说明服务未启动);./startWebLogic.sh(前台启动,查看实时日志)、nohup ./startWebLogic.sh &(后台启动,日志输出到nohup.out);./stopWebLogic.sh(需进入域的bin目录)。若WebLogic服务器挂起(无响应)或频繁崩溃,需通过以下命令诊断:
jstack <pid> > /tmp/thread_dump.txt(<pid>为WebLogic进程ID,可通过ps -ef | grep weblogic获取),用文本编辑器打开thread_dump.txt,查找“deadlock”(死锁)或“BLOCKED”(阻塞)状态的线程;jmap查看堆内存使用情况(jmap -heap <pid>),确认堆内存是否耗尽;startWebLogic.sh添加-Dcom.sun.management.jmxremote参数)。WebLogic依赖的外部服务(如数据库、缓存、消息队列)异常,会导致应用部署或运行失败。
检查要点:
systemctl status mysql);telnet <数据库IP> <端口>测试网络连通性);web.xml、persistence.xml)中的依赖服务配置是否正确。/etc/hosts文件中未绑定localhost)。/etc/hosts,添加127.0.0.1 localhost,重启服务器。WEB-INF/lib目录,确保所有依赖库存在;或修改WebLogic的CLASSPATH配置(在startWebLogic.sh中添加依赖库路径)。JAVA_OPTIONS中的堆内存大小(如-Xms2g -Xmx4g);使用MAT分析堆转储文件,修复内存泄漏。