首先明确故障范围,分为三类:硬件问题(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)。