Debian下WebLogic故障排查方法
小樊
34
2025-12-21 02:50:44
Debian下WebLogic故障排查方法
一 快速定位流程
查看系统层面:使用tail -f /var/log/syslog 、journalctl -xe 、dmesg 确认系统级错误、OOM、磁盘与网络异常。
检查进程与资源:用ps aux | grep weblogic 、top/htop 定位占用高的Java进程;结合free -m 、iostat 判断内存与I/O压力。
验证网络连通:对管理端口(默认7001 )执行telnet 目标IP 7001 或nc -vz 目标IP 7001 ;必要时检查本机与云安全组/防火墙策略。
服务状态与重启:若已配置为系统服务,用systemctl status weblogic 查看状态与最近日志;异常时先systemctl restart weblogic 再观察。
定位WebLogic日志:进入**$DOMAIN_HOME/logs**,优先查看server.log 、access.log 与域日志,结合tail -f 、grep -i error 快速筛查异常堆栈与错误码。
配置与控制台:核对**$DOMAIN_HOME/config/config.xml关键配置;通过 WebLogic管理控制台**检查应用部署状态、数据源与健康情况。
二 日志与关键文件位置
系统日志:/var/log/syslog (Debian常用系统日志);journalctl 用于按单元与时间段检索。
WebLogic日志:
服务器日志:$DOMAIN_HOME/servers//logs/.log
访问日志:$DOMAIN_HOME/servers//logs/access.log
域日志:$DOMAIN_HOME/servers//logs/.log
启动输出:若以脚本方式启动,关注nohup.out 或启动脚本重定向的日志。
日志分析建议:使用tail -f 实时跟踪、grep 关键字过滤、awk 按时间段统计错误;对访问日志可结合GoAccess 做可视化分析。
三 常见故障与处理要点
端口占用或进程残留:管理端口7001 无法访问或启动报端口冲突,先netstat -tulpen | grep 7001 确认占用,结束对应PID 后重启;必要时检查防火墙/安全组。
文件锁导致无法启动:出现“Unable to obtain file lock ”或“Could not get the server file lock ”,删除域根目录下的edit.lok 、config.lok ,以及servers//tmp/*.lok 、servers//data/ldap/ldapfiles/EmbeddedLDAP.lok ,并清理servers//data/store/下的 .DAT 文件后再启。
内存不足与GC异常:出现“There is insufficient memory for the Java Runtime Environment to continue ”或OutOfMemoryError ,优先检查系统ulimit -u/-n 、物理内存与交换分区;必要时调大JVM堆(如**-Xms/-Xmx**)并优化应用内存使用。
数据源与连接池:出现“No resources currently available in pool ”,在控制台适当增大Initial/Maximum Capacity ,并检查数据库连通性与网络延迟。
类加载冲突:出现NoSuchMethodError/NoClassDefFoundError ,在weblogic.xml 中使用**优先加载应用依赖(如 javax.persistence.、org.apache.commons. 、com.fasterxml.jackson.*、javassist**),避免与WebLogic自带模块冲突。
Admin控制台卡顿或节点异常:多与CPU/内存高 、集群节点繁忙有关;采集线程转储 与GC日志 ,结合应用慢查询/慢接口定位根因。
四 诊断与优化工具
系统诊断:
资源监控:top/htop、free -m、iostat -x 1、sar -r (内存与I/O趋势)。
日志检索:journalctl -u weblogic.service -b 、grep/awk/sed 做关键字与时段统计。
JVM诊断:开启**-verbose:class观察类加载;采集 线程dump/堆dump分析死锁、阻塞与内存泄漏;必要时调整 GC策略**与堆大小。
日志平台:使用Logstash/Graylog 集中收集与告警,或GoAccess 对access.log 做实时分析与报表。
五 最小复现与变更管理建议
变更留痕:对config.xml 、setDomainEnv.sh 、数据源与启动脚本的修改,保留备份 与变更单 ,变更后先灰度观察。
有序重启:先停应用再停节点,避免异常回滚;重启后用tail -f 观察server.log 直至“Server state changed to RUNNING”。
信息收集清单:准备server.log/access.log/GC日志、线程dump、ulimit与内核参数、网络与防火墙策略、JDK版本与启动参数 ,便于快速定位与复盘。