WebLogic在Linux环境中的故障排查需围绕日志分析、系统资源、配置文件、网络端口、JVM及应用层等核心维度展开,以下是具体步骤:
日志是故障排查的“第一线索”,需优先检查以下日志文件:
DOMAIN_HOME/logs/domain.log(记录域全局事件,如服务器启动/停止、集群状态变更);DOMAIN_HOME/servers/server_name/logs/server.log(记录单个服务器实例的详细运行信息,如请求处理、异常堆栈);DOMAIN_HOME/servers/server_name/logs/access.log(记录HTTP请求响应详情,如状态码、响应时间)。grep、awk等工具过滤关键字(如“ERROR”“Exception”“OutOfMemoryError”),快速定位错误类型。例如:grep -i "error" server.log。使用Linux系统工具检查CPU、内存、磁盘、网络资源使用情况,判断是否因资源不足导致故障:
top(查看进程CPU使用率,重点关注java进程)、vmstat 1(监控CPU空闲率、上下文切换次数);free -h(查看系统内存剩余量)、vmstat 1(监控内存swap使用情况,若swap频繁使用需扩容内存);df -h(检查磁盘分区剩余空间,若/或logs目录空间耗尽,需清理旧日志或扩容磁盘);iostat -x 1(查看磁盘读写延迟、IOPS,若延迟过高可能影响数据库访问);netstat -tulnp(查看网络连接状态,iftop(监控网络带宽占用)。WebLogic的配置文件错误是常见故障原因,需重点检查:
DOMAIN_HOME/config/config.xml(域核心配置文件,检查<server>、<cluster>、<data-source>等标签配置是否正确,如监听端口、集群节点IP、数据库连接串);bin/startWebLogic.sh(检查JAVA_HOME环境变量是否指向正确JDK路径,内存参数-Xms(初始堆)、-Xmx(最大堆)是否合理,如-Xms512m -Xmx2048m);web.xml、weblogic.xml(检查servlet映射、安全角色配置是否正确)。WebLogic依赖多个端口(如默认7001管理端口、7002集群端口),需确保端口可用:
netstat -an | grep <端口号>(如netstat -an | grep 7001),若端口被占用,可修改WebLogic端口配置(config.xml中<listen-port>标签)或杀掉占用进程(kill -9 <PID>);iptables -L -n(查看防火墙规则,确保WebLogic端口开放),若使用firewalld,可通过firewall-cmd --add-port=7001/tcp --permanent添加规则;ping <目标IP>(测试与客户端/数据库的网络连通性)、traceroute <目标IP>(检查网络路径是否通畅)。JVM内存问题(如OutOfMemoryError)会导致WebLogic崩溃,需通过以下方式排查:
startWebLogic.sh中设置合理的内存参数(如-Xms1024m -Xmx2048m -XX:MaxPermSize=512m,其中-Xms与-Xmx建议设置为相同值,避免堆内存频繁扩容);OutOfMemoryError时,WebLogic会生成堆转储文件(heapdump.hprof,位于域目录下),使用jhat或VisualVM工具分析,找出占用内存最多的对象(如未关闭的数据库连接、缓存数据);startWebLogic.sh中添加-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log,通过GC日志分析垃圾回收频率与耗时,判断是否需要调整内存分配。应用代码缺陷(如数据库死锁、线程阻塞、资源未释放)是性能问题的常见来源:
WEB-INF/classes/log4j.properties中配置的日志路径),查找SQLException(数据库连接失败)、NullPointerException(空指针异常)等错误;jstack <PID>生成线程转储文件,分析线程状态(如BLOCKED状态的线程过多可能表示死锁),找出阻塞的线程及对应的代码位置;config.xml中的数据源配置(如<jdbc-connection-pool>标签的initial-capacity、max-capacity参数),确保连接池大小合理(避免过大导致数据库资源耗尽,过小导致请求等待)。weblogic)对域目录、日志目录有读写权限(chown -R weblogic:weblogic /path/to/domain),避免因权限不足导致启动失败;ps -ef | grep java检查WebLogic进程是否存在,systemctl status weblogic(若使用systemd)查看服务状态,若进程不存在,尝试重启服务(./startWebLogic.sh);servers/server_name/tmp、servers/server_name/cache目录下的锁定文件(如*.lock)未删除,手动删除这些文件后重新启动。通过以上步骤,可系统性地排查Linux环境下WebLogic的常见故障。若问题仍未解决,建议结合WebLogic管理控制台(http://<IP>:7001/console)的监控功能(如服务器状态、线程池状态、JVM内存使用),或查阅Oracle官方文档、社区论坛获取进一步支持。