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.sh、setDomainEnv.sh、config.xml 的关键配置;验证与数据库、LDAP、NTP、反向代理的网络连通性。
三 运行期问题定位与修复
- 线程与内存分析:
- 获取 Java PID:jps -l
- 线程快照:jstack > jstack.log(定位 BLOCKED/WAITING 与死锁)
- 堆转储:jmap -dump:format=b,file=heap.hprof (用 VisualVM/MAT 分析泄漏与对象分布)
- JDBC与数据源:核对 URL、驱动类名、账号口令、连接池参数;在 console 或 config.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 冲突与配置 |
以上条目中的端口占用、权限问题、启动日志与控制台缓慢(熵源)等,均有实际案例与可行方案支撑。