温馨提示×

Ubuntu环境下如何进行WebLogic的故障排查

小樊
34
2025-12-26 12:14:00
栏目: 智能运维

Ubuntu下WebLogic故障排查实操手册

一 快速定位与日志分析

  • 定位域目录与日志:确认 $DOMAIN_HOME(如 /opt/weblogic/user_projects/domains/base_domain),日志集中在 $DOMAIN_HOME/logs。常用命令:
    • 查看实时日志:tail -f $DOMAIN_HOME/logs/server.log
    • 关键字检索:grep -i ‘error|exception|fail’ $DOMAIN_HOME/logs/server.log
    • 控制台日志:tail -f $DOMAIN_HOME/logs/AdminServer.log
  • 启动脚本输出:前台启动 startWebLogic.sh 时,观察控制台与 nohup.out/stdout.log/stderr.log 的异常堆栈与告警。
  • 常见线索:启动阶段关注 ClassNotFound/NoSuchMethodError(依赖冲突)、JDBC/连接池(数据库连通与驱动)、端口占用(监听与管理端口)等关键词。

二 启动失败与卡住的排查

  • 端口冲突:检查 7001/7002 等端口是否被占用或被防火墙拦截。
    • ss -lntp | grep -E ‘7001|7002’
    • sudo ufw status;必要时放行端口或调整 config.xml 中的监听端口。
  • 权限与目录:确保启动用户对 $DOMAIN_HOME$WL_HOME 及子目录具备读写权限;域目录中如 EmbeddedLDAP 权限异常会导致启动失败,需校正属主属组与权限位。
  • 资源瓶颈:使用 top/vmstat/iostat 观察 CPU/内存/磁盘IO,资源不足会导致进程“卡住”或无响应。
  • JVM与随机数熵源:Linux 上 /dev/random 熵不足会导致启动显著变慢或卡住,可在启动参数中加入:
    • -Djava.security.egd=file:/dev/./urandom
  • 配置与网络:复核 startWebLogic.shsetDomainEnv.shconfig.xml 的关键配置;验证与数据库、LDAP、NTP、反向代理的网络连通性。

三 运行期问题定位与修复

  • 线程与内存分析:
    • 获取 Java PID:jps -l
    • 线程快照:jstack > jstack.log(定位 BLOCKED/WAITING 与死锁)
    • 堆转储:jmap -dump:format=b,file=heap.hprof (用 VisualVM/MAT 分析泄漏与对象分布)
  • JDBC与数据源:核对 URL、驱动类名、账号口令、连接池参数;在 consoleconfig.xml 中排查连接池耗尽、超时与验证失败;必要时抓包或数据库端开启会话监控。
  • 类加载与库冲突:
    • 现象:NoSuchMethodError/NoClassDefFoundError/ClassCastException
    • 处置:在应用 WEB-INF/weblogic.xml 中使用 ,优先加载应用自有依赖,避免与 WebLogic 自带模块冲突。
  • 部署描述符与共享库:EAR/WAR 对 weblogic-application.xml/weblogic.xml 的库引用需与实际 Shared Library 一致,避免“类路径存在但运行时不可见”。

四 高频问题与对策速查表

症状 快速检查 处理建议
启动失败,报端口被占用 ss -lntp 更换端口或释放占用进程;检查防火墙
启动卡住或控制台很久才出来 top/vmstat;观察熵源 添加 -Djava.security.egd=file:/dev/./urandom
登录控制台很慢 启动阶段耗时 同上,优先使用 urandom 方案
启动报错 EmbeddedLDAP 初始化失败 查看 server.log;ls -l $DOMAIN_HOME/servers/AdminServer/data/ldap 校正目录权限/属主,必要时清理损坏数据后重启
内存溢出 grep -i ‘OutOfMemoryError’ server.log;jmap 堆转储 调整 -Xms/-Xmx;Java 8+ 关注 Metaspace;分析对象生命周期
数据源连不通 测试 JDBC URL/账号;ping/tnc 数据库主机端口 修正驱动版本与连接池参数;排查网络与防火墙
类冲突/方法找不到 异常栈;解压 WAR 核对依赖 使用 prefer-application-packages 或移除冲突 JAR
应用日志不输出 对比 System.out 与 log4j 统一日志框架绑定;排查 slf4j-log4j 冲突与配置

以上条目中的端口占用、权限问题、启动日志与控制台缓慢(熵源)等,均有实际案例与可行方案支撑。

0