温馨提示×

Linux WebLogic如何进行故障排查

小樊
54
2025-09-23 03:42:38
栏目: 智能运维

1. 检查日志文件(首要步骤)
日志是故障排查的核心依据,WebLogic的日志文件集中存储在$DOMAIN_HOME/servers/<server_name>/logs目录下,其中server.log(主日志)、AdminServer.out(管理服务器输出)、<server_name>.out(对应服务器实例输出)是重点关注对象。使用grep命令可快速定位错误关键字(如ERRORException),例如:grep -i "error" server.log,能快速获取故障根源(如端口冲突、配置错误、类加载失败等)。

2. 验证Java环境(基础依赖)
WebLogic依赖JDK运行,需确保:

  • 版本兼容性:如WebLogic 12c及以上版本要求Java 8或更高,14c及以上需Java 11+;
  • 环境变量正确性JAVA_HOME需指向JDK安装目录(如/usr/java/jdk1.8.0_391),且PATH中包含$JAVA_HOME/bin
  • 功能正常性:通过java -version命令验证是否能正确输出版本信息。若版本不符或环境变量错误,需调整setDomainEnv.sh(域环境脚本)中的JAVA_HOME设置。

3. 排查端口冲突(常见启动问题)
WebLogic默认使用7001(管理端口)、7002(HTTPS端口)等,若这些端口被其他进程(如Apache、Tomcat)占用,会导致启动失败。使用以下命令检查端口占用:

netstat -tulnp | grep <端口号> # 查看端口占用进程 lsof -i:<端口号> # 更详细显示进程信息(如PID、名称) 

若存在冲突,可选择:① 修改WebLogic端口(编辑config/config.xml中的<listen-port>标签);② 终止占用进程(kill -9 <PID>)。

4. 检查配置文件正确性(逻辑错误根源)
关键配置文件(如config.xmldomain.xmlstartup.properties)的错误(如XML标签未闭合、路径错误、参数配置不当)会导致启动失败。重点检查:

  • config.xml中的<domain><server><data-source>等核心标签是否完整;
  • startup.properties中的启动类路径是否正确;
  • 数据库连接池配置(如jdbc-urlusernamepassword)是否有效。修改配置文件后,需重启WebLogic使变更生效。

5. 监控系统资源(资源瓶颈排查)
系统资源不足(如内存、CPU、磁盘空间)会导致WebLogic运行缓慢或崩溃,使用以下命令监控:

  • 内存free -m(查看可用内存)、top(按M排序内存占用);
  • CPUtop(按P排序CPU占用)、vmstat 1 5(查看CPU使用率、上下文切换次数);
  • 磁盘空间df -h(查看磁盘使用率,重点关注/根分区)。
    若内存不足,可调整startWebLogic.sh中的JVM参数(如-Xms512m -Xmx2048m);若磁盘空间不足,需清理日志或临时文件。

6. 分析线程与内存转储(复杂问题诊断)

  • 线程分析:使用jstack <PID>命令生成线程转储(<PID>为WebLogic进程ID),分析是否存在线程死锁(如deadlock关键字)、线程阻塞(如长时间等待数据库连接);
  • 内存分析:使用jmap -dump:format=b,file=heap.hprof <PID>生成堆转储,通过MAT(Eclipse Memory Analyzer)工具分析内存泄漏(如大量未释放的对象);
  • GC日志:在启动脚本中添加-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log参数,分析垃圾回收情况(如频繁Full GC可能导致性能下降)。

7. 检查权限与锁文件(文件系统问题)

  • 权限问题:确保运行WebLogic的用户(如weblogic)对$DOMAIN_HOME及其子目录有读写权限(chown -R weblogic:weblogic $DOMAIN_HOME);
  • 锁文件问题:若启动时提示“无法获取文件锁”,可能是上次启动异常终止导致,需删除域目录下的锁文件(如edit.lokconfig.lokAdminServer.lok)。

8. 使用WLST与管理控制台(动态监控)

  • WLST(WebLogic Scripting Tool):通过脚本自动化提取日志、监控服务器状态,例如:
    connect('weblogic', '密码', 't3://localhost:7001') serverRuntime() exit() 
    可获取服务器运行时的线程、内存、JDBC连接池等信息;
  • 管理控制台:访问http://<服务器IP>:7001/console(默认端口7001),查看服务器状态(如“运行中”“已停止”)、应用部署情况(如是否激活)、数据源连接状态(如是否可用)。

9. 重启与重部署(临时问题解决)

  • 重启服务:有时临时性问题(如内存碎片、临时文件堆积)可通过重启解决,命令:./stopWebLogic.sh(停止)、./startWebLogic.sh(启动);
  • 重部署应用:若故障与应用相关(如WAR包损坏、类冲突),需重新部署:进入管理控制台的“部署”页面,卸载旧应用,上传新WAR包并激活。

0