Ubuntu 上 WebLogic 常见故障排除方法
一 快速定位与日志检查
- 优先查看以下关键日志与时间线,定位错误堆栈与首次报错位置:
- 域日志:$DOMAIN_HOME/servers/AdminServer/logs/<domain_name>.log
- 服务器日志:$DOMAIN_HOME/servers/<SERVER_NAME>/logs/<SERVER_NAME>.log
- 启动过程输出:$DOMAIN_HOME/servers/AdminServer/logs/startWebLogic.log
- HTTP 访问日志:$DOMAIN_HOME/servers/<SERVER_NAME>/logs/access.log
- Ubuntu 常用命令:
- 实时跟踪:tail -f $DOMAIN_HOME/servers/AdminServer/logs/server.log
- 错误检索:grep -n “ERROR|Exception” server.log
- 上下文查看:grep -C 10 “关键字” server.log
- 若管理控制台 http://IP:7001/console 无法访问,先确认监听端口与进程,再回到日志定位根因。
二 启动失败与运行异常通用排查
- 端口与连通性
- 检查监听端口:ss -ltnp | grep 7001;如被占用,释放或调整 config.xml 的 ListenPort。
- 防火墙放行:sudo ufw allow 7001/tcp;云主机需同步安全组规则。
- 资源与 JVM
- 资源监控:top / vmstat / iostat 观察 CPU/内存/磁盘IO 是否瓶颈。
- 内存与 GC:在 startWebLogic.sh 中按需调整 -Xms/-Xmx,并开启 -verbose:class -XX:+PrintGCDetails -XX:+PrintGCDateStamps 获取类加载与 GC 细节。
- 启动缓慢(熵不足)
- 编辑 $JAVA_HOME/jre/lib/security/java.security,将 securerandom.source=file:/dev/urandom 改为 securerandom.source=file:/dev/./urandom。
- 配置与权限
- 核对 config.xml 中关键配置项。
- 确保启动用户对 $DOMAIN_HOME 及子目录拥有读写权限,避免类加载、写锁失败。
- 数据库连接
- 校验 JDBC URL、驱动版本、账号口令;检查数据库与监听是否可达、连接池参数(初始/最大连接、超时)是否合理。
三 常见故障对照与修复
| 症状 |
快速检查 |
修复建议 |
| 访问控制台 http://IP:7001/console 失败 |
**ss -ltnp |
grep 7001**;netstat -an |
| 启动极慢或卡在初始化 |
dmesg/日志 无进展 |
将 securerandom.source 改为 file:/dev/./urandom |
| 启动报错 “Could not obtain the localhost address” |
hostname 解析 |
检查 /etc/hosts 与 /etc/hostname,确保能解析本机名 |
| 无法获取文件锁(.lok) |
**lsof |
grep .lok** |
| 节点管理器无法启动(Invalid state file format) |
查看 nodemanager.log |
删除 Domain_HOME/servers//data/nodemanager/*.state 后重启 NM |
| 受管服务器无法启动(WLS_DIAGNOSTICS.DAT* 异常) |
查看 SERVER.log |
删除 servers//data/store/diagnostics/WLS_DIAGNOSTICS.DAT* 后启动 |
| 部署/脚本执行超时 |
控制台是否有待激活变更 |
登录控制台激活或回退变更;必要时释放编辑锁 |
| 认证失败(boot.properties 或控制台登录) |
核对凭据文件与账号 |
在 servers/AdminServer/security/boot.properties 中写入正确 username/password(首次启动后会被加密) |
- 实用命令清单(Ubuntu 适配)
- 端口与进程:ss -ltnp | grep 7001;结束占用进程:kill -9 PID
- 日志与关键字:tail -f 实时查看;grep -n “ERROR|Exception”;grep -C 10 上下文
- 后台启动与输出:nohup ./startWebLogic.sh > nohup.out 2>&1 &
- 资源监控:top / vmstat 1 / iostat -x 1
- JVM 诊断:线程快照 jstack > jstack.out;堆转储 jmap -dump:format=b,file=heap.hprof
- 防火墙:sudo ufw allow 7001/tcp;sudo ufw status
四 线程 内存与数据库问题定位
- 线程与阻塞
- 管理控制台卡顿或响应慢时,使用 WLST 或 jstack 获取线程转储,分析是否存在 BLOCKED/WAITING 线程与长调用栈。
- 内存与 GC
- 出现 OutOfMemoryError 或频繁 Full GC 时,先获取堆转储:jmap -dump:format=b,file=heap.hprof ;使用 Eclipse MAT 或 YourKit 分析泄漏与对象生命周期。
- JDBC 与连接池
- 校验 JDBC URL、驱动版本、账号口令;确认数据库与监听可达;结合应用负载评估 初始/最大连接、超时 等参数是否合理。
五 预防性配置与运维建议
- 启动参数基线
- 在 startWebLogic.sh 中设置合理堆与 GC 参数,例如:-Xms2g -Xmx2g -XX:+PrintGCDetails -XX:+PrintGCDateStamps;如仍遇到启动慢,启用 -Djava.security.egd=file:/dev/./urandom 缓解熵不足。
- 文件权限与锁清理
- 确保 $DOMAIN_HOME 及子目录归属启动用户;异常退出后清理残留 .lok 与诊断数据再启动(清理前务必确认无 WebLogic 进程在运行)。
- 变更与回滚
- 控制台变更未激活会阻塞部署/脚本执行;必要时激活或回退,并释放编辑锁。
- 自动化监控
- 结合 WLST 与系统工具(如 top/vmstat/iostat)建立巡检;生产环境建议引入 Prometheus + Grafana 做指标可视化与告警。