日志是故障排查的核心依据,需优先检查以下日志文件:
$DOMAIN_HOME/logs/domain.log,记录域级别的严重错误(如启动失败、配置变更),默认仅转发NOTICE及以上级别的消息;$DOMAIN_HOME/servers/$SERVER_NAME/logs/$SERVER_NAME.log(如AdminServer.log),记录单个服务器的启动、关闭及运行时错误(如线程阻塞、应用部署失败);$DOMAIN_HOME/servers/$SERVER_NAME/logs/access.log,记录客户端请求详情(如HTTP状态码、访问IP),用于分析请求相关问题(如404、500错误)。tail -f $DOMAIN_HOME/logs/$SERVER_NAME.log:实时查看Server日志;grep -i "error" $DOMAIN_HOME/logs/domain.log:过滤Domain日志中的错误信息;cat -n $DOMAIN_HOME/logs/$SERVER_NAME.log | grep -A 5 -B 5 "Exception":查看异常堆栈及上下文(前后5行)。资源不足是WebLogic故障的常见诱因,需检查以下指标:
top命令查看进程CPU占用(按P键排序),若WebLogic进程(java)占用过高(如超过80%),可能存在内存泄漏或线程阻塞;free -m查看系统内存,top查看WebLogic进程的内存占用(RES列),若接近-Xmx(最大堆内存)设置,需调整JVM参数;df -h查看磁盘使用情况,若/或$DOMAIN_HOME所在分区剩余空间不足(如小于10%),可能导致日志无法写入或应用无法启动;iostat -x 1查看磁盘读写延迟(await列),若延迟过高(如超过20ms),可能影响数据库访问或日志写入。ps -ef | grep java查看是否有WebLogic进程(通常包含weblogic.Server关键字),若无进程,需启动服务;systemd管理,使用systemctl status weblogic查看服务状态(如active (running)表示运行中),若未运行,使用systemctl start weblogic启动;netstat -tuln | grep 7001(默认端口7001)或ss -tuln | grep 7001查看WebLogic监听端口,若端口未监听,可能是进程未启动或端口冲突。$DOMAIN_HOME/config/config.xml,是域的核心配置文件,需检查以下内容:
listen-address、port是否正确);jdbc-url、username、password是否正确,连接池参数是否合理);realm、role、user是否正确);$DOMAIN_HOME/bin/startWebLogic.sh,检查JAVA_HOME、WL_HOME等环境变量是否设置正确(如JAVA_HOME=/usr/java/jdk1.8.0_391),脚本是否有语法错误;$DOMAIN_HOME/servers/$SERVER_NAME/tmp、$DOMAIN_HOME/servers/$SERVER_NAME/cache目录下的.lock文件(如edit.lok、config.lok),删除后可解决锁冲突问题。weblogic)运行(而非root),避免权限问题导致文件无法写入或服务无法启动;~/.bash_profile或/etc/profile中的JAVA_HOME(如export JAVA_HOME=/usr/java/jdk1.8.0_391)、WL_HOME(如export WL_HOME=/home/weblogic/Oracle/Middleware)是否设置正确,使用source ~/.bash_profile使配置生效;java -version查看JDK版本。ping <客户端IP>检查WebLogic服务器与客户端的连通性,使用traceroute <客户端IP>跟踪数据包路径,排除网络中断或路由问题;firewall-cmd --list-ports查看防火墙开放端口,若WebLogic端口(如7001)未开放,使用以下命令开放:firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --reload
getenforce返回Enforcing),可能阻止WebLogic绑定端口,使用setenforce 0临时关闭(测试用),或修改/etc/selinux/config中的SELINUX=permissive永久关闭。http://<WebLogic-IP>:7001/console,登录后导航至Monitoring→Servers,查看服务器状态(如RUNNING)、线程池(如活跃线程数)、内存使用(如堆内存占用)等指标,快速定位性能瓶颈;connect('weblogic', 'welcome1', 't3://localhost:7001')
serverRuntime = cmo.getServerRuntime()
healthState = serverRuntime.getHealthState()
print("Server Health State:", healthState)
disconnect()
保存为check_health.py,执行java weblogic.WLST check_health.py查看结果;$DOMAIN_HOME/bin/setDomainEnv.sh,添加-Dcom.sun.management.jmxremote.port=9000等参数),使用jconsole或VisualVM连接,监控线程、内存、JDBC连接池等详细指标。$DOMAIN_HOME/servers/$SERVER_NAME/logs/$SERVER_NAME.log中的错误信息,常见原因包括配置文件错误(如config.xml语法错误)、端口冲突(如7001已被占用)、JDK版本不兼容(如使用JDK 17运行WebLogic 12c);max-threads设置,需增加max-threads)、JDBC连接池等待连接数(若等待数过高,需增加max-capacity)、内存泄漏(使用jmap分析堆内存,查看是否有对象持续增长);$DOMAIN_HOME/servers/$SERVER_NAME/logs/$SERVER_NAME.log中的应用部署日志,常见原因包括应用WAR包损坏、依赖库缺失(如缺少javax.servlet)、部署描述符错误(如web.xml语法错误)。