首先明确故障范围,分为三类:硬件问题(CPU、内存、磁盘空间不足)、软件问题(WebLogic配置错误、应用程序代码缺陷、依赖库缺失)、网络问题(端口冲突、网络连接中断)。这一步有助于快速定位排查方向。
日志是故障排查的核心依据,需检查以下日志:
DOMAIN_HOME/servers/server_name/logs
目录下,重点关注AdminServer.out
、server_name.out
、server_name.log
(记录启动错误、应用部署异常、请求处理失败等);/var/log/messages
或/var/log/syslog
(记录系统级错误,如磁盘满、内存溢出)。grep
命令快速查找关键字(如ERROR
、Exception
),定位具体错误信息。ps -ef | grep weblogic
确认WebLogic进程是否运行;systemctl status weblogic
(若配置为systemd服务)检查服务状态;systemctl start weblogic
)并观察启动日志。netstat -tulnp | grep <端口号>
(如7001、5556)或lsof -i :<端口号>
,确认WebLogic使用的端口未被其他应用占用;ping
(检查网络可达性)、traceroute
(追踪路由路径)、telnet <IP> <端口>
(测试端口连通性);iptables -L
(CentOS 7前)或firewall-cmd --list-all
(CentOS 7+)检查防火墙规则,确保WebLogic端口开放。重点检查以下配置文件的正确性:
DOMAIN_HOME/config
),确认监听端口、集群配置、数据源配置无误;DOMAIN_HOME/servers/AdminServer/security
),确保用户名、密码正确且文件权限为600
(仅owner可读写);DOMAIN_HOME/bin
),确认JAVA_HOME
路径正确、JVM内存参数(-Xms
、-Xmx
)设置合理。free -m
查看内存剩余量,若内存不足,调整setDomainEnv.sh
中的JVM内存参数(如-Xms2048m -Xmx4096m
);top
或htop
查看CPU占用率,若某进程占用过高,可能是应用代码缺陷或线程池配置不当;df -h
查看磁盘剩余空间,若/
或DOMAIN_HOME
所在分区空间不足,清理无用文件(如日志、临时文件)。java.lang.OutOfMemoryError
,使用jmap -heap <pid>
查看堆内存使用情况,jstack <pid>
获取线程转储,分析内存泄漏点;使用jstat -gcutil <pid> 1000 10
(每1秒输出1次,共10次)监控GC情况,确认GC频率是否过高;setDomainEnv.sh
中添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof
,崩溃时自动生成堆转储文件,便于后续分析。jstack <pid>
获取线程转储,分析线程状态(如BLOCKED
、WAITING
),定位死锁或线程阻塞点;Domainname→Servers→servername→Monitoring→Threads
)查看线程池使用情况,调整ExecuteThreadTotal
(总线程数)参数(建议每个CPU核心分配25-50个线程)。DOMAIN_HOME/servers/AdminServer/tmp
、DOMAIN_HOME/servers/AdminServer/cache
目录下的临时文件,重新上传并部署WAR/EAR包;WEB-INF/lib
目录下,无版本冲突或缺失。-Xms
、-Xmx
、-XX:NewRatio
、-XX:SurvivorRatio
),选择合适的垃圾回收器(如G1GC);InitialCapacity
、MaxCapacity
)、线程池大小、缓存设置(如weblogic.cache.Enabled
);/etc/security/limits.conf
增加文件描述符限制(如weblogic soft nofile 65535
、weblogic hard nofile 65535
),优化TCP参数(如net.ipv4.tcp_tw_reuse=1
、net.ipv4.tcp_fin_timeout=30
)。