Ubuntu上WebLogic故障排查方法
日志是故障排查的核心依据,WebLogic的日志文件详细记录了启动、运行及错误信息。Ubuntu下日志通常位于域目录的logs子目录(如/home/weblogic/user_projects/domains/base_domain/logs),关键文件包括:
server.log:服务器实例的主日志,包含启动过程、请求处理及错误堆栈;domain.log:域级别的日志,记录域配置变更、全局错误等;access.log:HTTP访问日志,用于分析客户端请求情况。tail -f /path/to/logs/server.log:实时跟踪最新日志;grep "ERROR" /path/to/logs/server.log:筛选错误信息;http://localhost:7001/console)的“日志”选项卡远程查看和管理日志。WebLogic依赖多个端口(默认7001为管理端口、7002为集群端口),端口被占用会导致启动失败。Ubuntu下可通过以下命令检查端口占用:
netstat -tulnp | grep <端口号>:查看端口占用进程;lsof -i :<端口号>:更详细显示占用进程信息(如PID、进程名)。config/config.xml或bin/setDomainEnv.sh)中的端口号,或杀掉占用进程(kill -9 <PID>)。配置文件错误(如config.xml、domain.xml语法错误或参数配置不当)会导致WebLogic无法启动或运行异常。需重点检查:
$DOMAIN_HOME/config/config.xml(域配置)、$DOMAIN_HOME/config/system.xml(系统配置);-Xms、-Xmx);xmllint --noout /path/to/config.xml验证)。内存溢出(OutOfMemoryError)是WebLogic常见故障,需通过以下步骤排查:
jstat -gcutil <PID> 1000(PID为WebLogic进程ID,通过ps -ef | grep weblogic获取)查看堆内存(Eden、Survivor、Old区)及GC情况;setDomainEnv.sh中添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof,崩溃时生成堆转储文件;jmap -heap <PID>查看内存分配,通过Eclipse MAT(Memory Analyzer Tool)分析堆转储文件,找出占用大量内存的对象及引用链;setDomainEnv.sh中的-Xms(初始堆,如512m)、-Xmx(最大堆,如2048m)、-XX:MaxPermSize(永久代,如512m,Java 8及以上改为-XX:MaxMetaspaceSize)。java -version确认JDK版本,修改setDomainEnv.sh中的JAVA_HOME指向正确路径;setDomainEnv.sh中设置了JAVA_HOME、PATH(包含JDK的bin目录)、CLASSPATH(包含WebLogic类库);lib目录下的.jar文件)是否齐全,避免ClassNotFoundException或NoClassDefFoundError。ps -ef | grep weblogic查看WebLogic进程是否存在,若未运行,尝试手动启动(./startWebLogic.sh);systemd管理WebLogic服务,可通过systemctl status weblogic查看服务状态,使用systemctl restart weblogic重启服务;top、htop查看CPU、内存使用率,若资源耗尽,需优化应用或扩容服务器。部署失败(如An unexpected error condition has been detected)需检查:
AdminServer/logs下的部署日志(如deploy.log),定位具体错误(如类冲突、资源缺失);WEB-INF、META-INF等必要目录;LinkageError或ClassNotFoundException,需检查应用依赖的库是否与WebLogic自带库冲突(如javax.servlet版本冲突),可通过setDomainEnv.sh中的CLASSPATH调整加载顺序,或使用<prefer-application-packages>标签在weblogic.xml中指定优先加载应用类。