日志是故障排查的核心依据,WebLogic的主要日志位于域目录的logs子目录(如/opt/weblogic/user_projects/domains/base_domain/logs/),关键文件包括:
server.log:记录服务器启动、运行及错误信息;console.log:记录管理控制台操作日志;domain.log:域级别的事件日志。tail -f /opt/weblogic/user_projects/domains/base_domain/logs/server.log # 实时跟踪日志 grep -i "error\|fail\|exception" /opt/weblogic/user_projects/domains/base_domain/logs/server.log # 筛选错误关键词 通过日志中的BEA开头错误代码(如BEA-000386表示无法获取本地主机地址)或异常堆栈,可快速定位问题根源。
资源不足(内存、CPU、磁盘空间)是WebLogic启动或运行失败的常见原因:
top、free -h命令查看系统资源占用,重点关注WebLogic进程(如java进程)的内存使用(RES列)和CPU占用率;若内存不足,可通过调整WebLogic启动脚本(setDomainEnv.sh)中的-Xms(初始堆)、-Xmx(最大堆)参数增加堆内存(如-Xms1g -Xmx2g)。df -h命令检查域目录、日志目录所在分区的剩余空间(建议保留至少10%空闲空间)。WebLogic的配置文件错误(如config.xml、boot.properties)会导致启动失败或功能异常:
xmllint --noout /opt/weblogic/user_projects/domains/base_domain/config/config.xml命令验证config.xml的XML语法是否正确;config.xml中的<server>、<cluster>、<datasource>、<security>等标签配置是否符合预期(如数据源的JDBC URL、用户名密码是否正确);bin/startWebLogic.sh脚本中的环境变量(如JAVA_HOME、DOMAIN_HOME)是否指向正确路径。WebLogic依赖正确的环境变量才能运行,需确保以下变量已配置:
/usr/lib/jvm/java-11-openjdk-amd64),可通过java -version命令验证JDK版本(需满足WebLogic最低要求,如JDK 11及以上);$JAVA_HOME/bin和WebLogic的bin目录(如/opt/weblogic/wlserver/server/bin);$WL_HOME/server/lib/weblogic.jar)。source /etc/profile或source ~/.bashrc使配置生效。ps -ef | grep java命令检查WebLogic进程是否在运行(如./startWebLogic.sh启动的java进程);若进程不存在,可能是启动失败,需查看日志排查原因。netstat -tulnp | grep 7001 # 查看端口监听状态 telnet <服务器IP> 7001 # 测试端口连通性(若未安装telnet,使用sudo apt install telnet) 若端口未开放,需检查防火墙设置(sudo ufw allow 7001/tcp)或SELinux配置。若WebLogic出现高CPU使用率或挂起问题,需生成线程转储分析线程状态:
ps -ef | grep java命令找到WebLogic主进程的PID;jstack <PID> > thread_dump.txt命令生成线程转储文件;grep -A 10 "deadlock" thread_dump.txt查找死锁,或通过VisualVM、JConsole等工具分析线程阻塞情况(如大量线程处于RUNNABLE状态但未完成任务)。http://<服务器IP>:7001/console,登录后检查服务器状态(如“运行中”“已关闭”)、部署的应用程序状态(如“已激活”“失败”)、数据源连接情况(如“测试连接”是否成功);connect('weblogic', 'weblogic123', 't3://localhost:7001') # 连接到管理服务器 ls('/Servers/AdminServer/ServerStatus') # 查看AdminServer状态 disconnect() JConsole)监控WebLogic的内存使用、线程活动、数据库连接池等性能指标。若故障出现在修改配置(如调整config.xml)、部署应用或升级WebLogic/JDK后,需逐步回滚变更:
config.xml.bak);undeploy命令卸载最近部署的应用(通过控制台或WLST);