centos

centos环境下weblogic的故障排查指南

小樊
50
2025-10-05 07:02:02
栏目: 智能运维

一、基础环境检查

  1. Java环境验证:确保系统安装的Java版本与WebLogic兼容(如WebLogic 12c需Java 8及以上)。通过java -version命令检查Java版本,若未安装或版本不符,从Oracle官网下载对应JDK并配置JAVA_HOME环境变量(指向JDK安装目录),将其加入PATH中。
  2. 操作系统权限:确认运行WebLogic的用户(如weblogic)对域目录(DOMAIN_HOME)、日志目录(logs)、临时目录(tmp)等有读写权限。若权限不足,使用chown -R weblogic:weblogic /path/to/domain修改所有权,chmod -R 775 /path/to/domain设置合理权限。

二、日志分析与关键错误定位

  1. 日志路径:WebLogic日志主要位于DOMAIN_HOME/servers/AdminServer/logs/(AdminServer日志)和DOMAIN_HOME/servers/your_server_name/logs/(子服务器日志),核心日志文件为server.log
  2. 实时日志查看:使用tail -f /path/to/domain/logs/server.log实时监控日志输出,快速捕捉启动或运行时的错误信息(如OutOfMemoryErrorClassNotFoundExceptionPortAlreadyInUse等)。
  3. 常见日志错误处理
    • 启动失败(bea-000386):通常因网络配置错误(如主机名解析失败),检查/etc/hosts文件确保主机名与IP映射正确。
    • 内存溢出(OutOfMemoryError):需调整JVM内存参数(见“JVM内存配置”部分)。
    • 认证失败(Authentication denied):检查boot.properties文件中的用户名/密码是否正确,若密码修改后需重新生成加密文件。

三、配置文件校验

  1. 核心配置文件:重点检查DOMAIN_HOME/config/config.xml(域配置)、DOMAIN_HOME/config/boot.properties(启动认证)、DOMAIN_HOME/servers/AdminServer/config/admin.conf(AdminServer配置)等文件的语法正确性。可使用xmllint --noout /path/to/config.xml验证XML格式是否合法。
  2. 端口配置:确认config.xml中的监听端口(如7001、7002)未被其他应用占用。使用netstat -tulnp | grep <端口号>ss -tulnp | grep <端口号>检查端口占用情况,若冲突可修改config.xml中的端口或终止占用进程。

四、系统资源监控

  1. 内存与CPU使用:使用tophtopfree -h命令查看WebLogic进程的内存(RES列)、CPU(%CPU列)使用情况。若内存占用过高,需调整JVM堆大小(见“JVM内存配置”);若CPU占用100%,可能因线程死锁或应用性能问题,需进一步分析线程堆栈(见“线程分析”)。
  2. 磁盘空间:使用df -h检查磁盘剩余空间,确保logstmp等目录所在分区有足够空间(建议保留20%以上),避免因磁盘满导致WebLogic无法启动或运行异常。

五、端口与网络连通性

  1. 端口冲突排查:使用netstat -tulnp | grep <端口号>ss -tulnp | grep <端口号>检查WebLogic所需端口(如7001、7002)是否被其他进程占用。若冲突,修改config.xml中的端口或使用kill -9 <PID>终止占用进程。
  2. 网络连通性测试:使用ping <目标主机>测试与客户端的连通性,telnet <主机> <端口>测试端口是否可达。若无法连通,检查防火墙设置(iptables -L -n)或SELinux状态(getenforce),确保放行WebLogic端口。

六、JVM内存配置

  1. 参数调整:修改DOMAIN_HOME/bin/startWebLogic.sh(Linux)或startWebLogic.cmd(Windows)中的JVM内存参数,根据服务器内存大小合理设置:
    • -Xms:初始堆大小(如-Xms1024m);
    • -Xmx:最大堆大小(如-Xmx2048m);
    • -XX:MaxPermSize(Java 7及之前):永久代大小(如-XX:MaxPermSize=512m);
    • 推荐使用G1垃圾回收器(-XX:+UseG1GC)提升GC效率。
  2. 内存泄漏排查:若频繁出现OutOfMemoryError,使用jmap -histo:live <PID>查看堆内存中的对象分布,jvisualvmMAT(Memory Analyzer Tool)分析内存泄漏点(如未关闭的数据库连接、缓存未清理等)。

七、线程与死锁分析

  1. 线程堆栈获取:使用jstack <PID> > thread_dump.log获取WebLogic进程的线程堆栈信息,分析线程状态(如RUNNABLEBLOCKED)。
  2. 死锁检测:在thread_dump.log中搜索“deadlock”关键词,若存在死锁,需修改应用代码(如避免嵌套锁、使用tryLock替代synchronized)或调整线程池大小(config.xml中的<thread-pool>配置)。

八、权限与锁定文件处理

  1. 权限修复:确保运行WebLogic的用户对以下目录有完全控制权:
    • 域目录(DOMAIN_HOME);
    • 日志目录(logs);
    • 临时目录(tmp);
    • 缓存目录(cache)。
  2. 锁定文件删除:若WebLogic无法启动(如卡在“Starting”状态),删除域目录下的锁定文件:
    • edit.lok(编辑锁定文件);
    • config.lok(配置锁定文件);
    • AdminServer.lok(AdminServer锁定文件);
    • EmbeddedLDAP.ldap.dat(LDAP数据库文件)。

九、应用程序部署检查

  1. 部署状态验证:通过WebLogic管理控制台(http://<主机>:7001/console)进入“部署”页面,检查应用程序是否处于“已激活”状态。若状态为“失败”,点击“查看日志”获取具体错误信息。
  2. 重新部署应用:若应用部署失败,删除原有部署(“部署”→“目标”→“取消部署”),重新上传WAR/EAR文件并部署。确保应用包结构正确(如WEB-INF/lib下的jar包无冲突)。

十、系统资源限制调整

  1. 文件描述符限制:WebLogic需要大量文件描述符(尤其是处理大量并发请求时)。使用ulimit -n查看当前限制,若小于10000,修改/etc/security/limits.conf文件,添加以下内容:
    * soft nofile 65535
    * hard nofile 65535
    
    重新登录用户使设置生效。
  2. 进程数限制:使用ulimit -u查看进程数限制,若不足,同样在limits.conf中添加:
    * soft nproc 65535
    * hard nproc 65535
    

十一、其他常见问题解决

  1. SELinux设置:若SELinux处于“Enforcing”模式,可能会阻止WebLogic访问某些文件或端口。使用setenforce 0临时设置为“Permissive”模式,或修改/etc/selinux/config文件中的SELINUX=permissive,重启系统生效。
  2. 版本升级:若使用较旧版本的WebLogic(如10g),建议升级到最新版本(如14c),新版本通常修复了已知bug并提升了稳定性。

0
看了该问题的人还看了