温馨提示×

Ubuntu上WebLogic的故障排查有哪些方法

小樊
48
2025-10-12 07:53:27
栏目: 智能运维

Ubuntu上WebLogic故障排查方法

1. 日志分析与错误定位

日志是故障排查的核心依据,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:筛选错误信息;
  • 通过WebLogic管理控制台(http://localhost:7001/console)的“日志”选项卡远程查看和管理日志。

2. 端口冲突检查

WebLogic依赖多个端口(默认7001为管理端口、7002为集群端口),端口被占用会导致启动失败。Ubuntu下可通过以下命令检查端口占用:

  • netstat -tulnp | grep <端口号>:查看端口占用进程;
  • lsof -i :<端口号>:更详细显示占用进程信息(如PID、进程名)。
    若端口被占用,可修改WebLogic配置文件(config/config.xmlbin/setDomainEnv.sh)中的端口号,或杀掉占用进程(kill -9 <PID>)。

3. 配置文件验证

配置文件错误(如config.xmldomain.xml语法错误或参数配置不当)会导致WebLogic无法启动或运行异常。需重点检查:

  • 配置文件路径:$DOMAIN_HOME/config/config.xml(域配置)、$DOMAIN_HOME/config/system.xml(系统配置);
  • 关键参数:监听端口、数据库连接池URL/用户名/密码、集群节点配置、JVM内存参数(-Xms-Xmx);
  • 文件格式:确保XML文件标签闭合、无语法错误(可使用xmllint --noout /path/to/config.xml验证)。

4. JVM内存与性能分析

内存溢出(OutOfMemoryError)是WebLogic常见故障,需通过以下步骤排查:

  • 查看JVM内存使用:使用jstat -gcutil <PID> 1000PID为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)。

5. 环境变量与依赖检查

  • JDK版本兼容性:WebLogic对JDK版本有严格要求(如12c支持JDK 8及以上,14c支持JDK 11及以上),需通过java -version确认JDK版本,修改setDomainEnv.sh中的JAVA_HOME指向正确路径;
  • 环境变量设置:确保setDomainEnv.sh中设置了JAVA_HOMEPATH(包含JDK的bin目录)、CLASSPATH(包含WebLogic类库);
  • 依赖库完整性:检查应用依赖的第三方库(如lib目录下的.jar文件)是否齐全,避免ClassNotFoundExceptionNoClassDefFoundError

6. 进程与服务状态检查

  • 确认WebLogic进程运行:使用ps -ef | grep weblogic查看WebLogic进程是否存在,若未运行,尝试手动启动(./startWebLogic.sh);
  • 检查服务状态:若使用systemd管理WebLogic服务,可通过systemctl status weblogic查看服务状态,使用systemctl restart weblogic重启服务;
  • 查看系统资源:使用tophtop查看CPU、内存使用率,若资源耗尽,需优化应用或扩容服务器。

7. 应用部署问题排查

部署失败(如An unexpected error condition has been detected)需检查:

  • 部署日志:查看AdminServer/logs下的部署日志(如deploy.log),定位具体错误(如类冲突、资源缺失);
  • 应用完整性:确保WAR/EAR文件未损坏,解压后包含WEB-INFMETA-INF等必要目录;
  • 类加载冲突:若出现LinkageErrorClassNotFoundException,需检查应用依赖的库是否与WebLogic自带库冲突(如javax.servlet版本冲突),可通过setDomainEnv.sh中的CLASSPATH调整加载顺序,或使用<prefer-application-packages>标签在weblogic.xml中指定优先加载应用类。

0