温馨提示×

Ubuntu环境下WebLogic的故障排查方法

小樊
37
2025-11-15 02:10:30
栏目: 智能运维

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
  • 若控制台无法访问,先确认监听端口(默认 7001)与进程状态,再回到日志定位根因。

二 启动失败与运行异常的通用排查

  • 端口与连通性
    • 检查监听端口:ss -ltnp | grep 7001;如被占用,释放或调整 config.xmlListenPort
    • 防火墙放行: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 或 netstat -an | grep 7001
    • 结束占用进程:kill -9 PID
  • 日志与关键字
    • 实时跟踪:tail -f $DOMAIN_HOME/servers/AdminServer/logs/server.log
    • 错误检索:grep -n “ERROR|Exception” server.log;上下文:grep -C 10 “关键字” server.log
  • 后台启动与输出
    • 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

五 一键清理锁文件脚本 Ubuntu版

  • 适用场景:异常退出导致 .lok 或诊断数据残留,需清理后重启。
  • 注意:执行前确保无 WebLogic 进程在运行(必要时先 kill),避免数据损坏。
#!/usr/bin/env bash
set -e

DOMAIN_HOME="/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain"

echo "清理 WebLogic 锁与诊断文件..."

# 1) 删除编辑锁
[ -f "$DOMAIN_HOME/edit.lok" ] && rm -f "$DOMAIN_HOME/edit.lok" && echo "已删除 $DOMAIN_HOME/edit.lok"

# 2) 删除配置锁(若存在)
[ -f "$DOMAIN_HOME/config/config.lok" ] && rm -f "$DOMAIN_HOME/config/config.lok" && echo "已删除 $DOMAIN_HOME/config/config.lok"

# 3) AdminServer 运行时锁
[ -f "$DOMAIN_HOME/servers/AdminServer/tmp/AdminServer.lok" ] && rm -f "$DOMAIN_HOME/servers/AdminServer/tmp/AdminServer.lok" && echo "已删除 AdminServer.lok"

# 4) 嵌入式LDAP锁
[ -f "$DOMAIN_HOME/servers/AdminServer/data/ldap/ldapfiles/EmbeddedLDAP.lok" ] && rm -f "$DOMAIN_HOME/servers/AdminServer/data/ldap/ldapfiles/EmbeddedLDAP.lok" && echo "已删除 EmbeddedLDAP.lok"

# 5) 诊断与默认存储DAT(可按需保留历史)
find "$DOMAIN_HOME/servers" -type f -name "WLS_DIAGNOSTICS*.DAT" -delete && echo "已删除 WLS_DIAGNOSTICS*.DAT"
find "$DOMAIN_HOME/servers" -type f -name "_WLS_*.DAT" -delete && echo "已删除 _WLS_*.DAT"

echo "锁与诊断文件清理完成,请重新启动 WebLogic。"

以上流程覆盖日志定位、端口与网络、资源配置、JVM与性能、常见故障修复等关键维度,可在 Ubuntu 上系统化地排查与恢复 WebLogic 服务。

0