温馨提示×

weblogic故障排查在centos上如何进行

小樊
37
2025-11-08 05:56:34
栏目: 智能运维

CentOS上WebLogic故障排查步骤

1. 日志分析与定位

日志是故障排查的核心依据,需优先检查以下日志文件:

  • Domain日志:路径为$DOMAIN_HOME/logs/domain.log,记录域级别的严重错误(如启动失败、配置变更),默认仅转发NOTICE及以上级别的消息;
  • Server日志:路径为$DOMAIN_HOME/servers/$SERVER_NAME/logs/$SERVER_NAME.log(如AdminServer.log),记录单个服务器的启动、关闭及运行时错误(如线程阻塞、应用部署失败);
  • Access日志:路径为$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行)。

2. 系统资源监控

资源不足是WebLogic故障的常见诱因,需检查以下指标:

  • CPU使用率:使用top命令查看进程CPU占用(按P键排序),若WebLogic进程(java)占用过高(如超过80%),可能存在内存泄漏或线程阻塞;
  • 内存使用率:使用free -m查看系统内存,top查看WebLogic进程的内存占用(RES列),若接近-Xmx(最大堆内存)设置,需调整JVM参数;
  • 磁盘空间:使用df -h查看磁盘使用情况,若/$DOMAIN_HOME所在分区剩余空间不足(如小于10%),可能导致日志无法写入或应用无法启动;
  • 磁盘I/O:使用iostat -x 1查看磁盘读写延迟(await列),若延迟过高(如超过20ms),可能影响数据库访问或日志写入。

3. 进程与服务状态检查

  • 确认WebLogic进程运行:使用ps -ef | grep java查看是否有WebLogic进程(通常包含weblogic.Server关键字),若无进程,需启动服务;
  • 检查服务状态:若WebLogic通过systemd管理,使用systemctl status weblogic查看服务状态(如active (running)表示运行中),若未运行,使用systemctl start weblogic启动;
  • 验证端口监听:使用netstat -tuln | grep 7001(默认端口7001)或ss -tuln | grep 7001查看WebLogic监听端口,若端口未监听,可能是进程未启动或端口冲突。

4. 配置文件验证

  • config.xml:路径为$DOMAIN_HOME/config/config.xml,是域的核心配置文件,需检查以下内容:
    • Server/Cluster配置(如listen-addressport是否正确);
    • Data Source配置(如jdbc-urlusernamepassword是否正确,连接池参数是否合理);
    • Security配置(如realmroleuser是否正确);
  • 启动脚本:路径为$DOMAIN_HOME/bin/startWebLogic.sh,检查JAVA_HOMEWL_HOME等环境变量是否设置正确(如JAVA_HOME=/usr/java/jdk1.8.0_391),脚本是否有语法错误;
  • 锁定文件:若启动失败,检查$DOMAIN_HOME/servers/$SERVER_NAME/tmp$DOMAIN_HOME/servers/$SERVER_NAME/cache目录下的.lock文件(如edit.lokconfig.lok),删除后可解决锁冲突问题。

5. 权限与环境变量检查

  • 运行用户权限:确保WebLogic以专用用户(如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使配置生效;
  • JDK兼容性:确认JDK版本与WebLogic版本匹配(如WebLogic 12c需JDK 8+,WebLogic 14c需JDK 11+),使用java -version查看JDK版本。

6. 网络与防火墙检查

  • 网络连通性:使用ping <客户端IP>检查WebLogic服务器与客户端的连通性,使用traceroute <客户端IP>跟踪数据包路径,排除网络中断或路由问题;
  • 防火墙设置:使用firewall-cmd --list-ports查看防火墙开放端口,若WebLogic端口(如7001)未开放,使用以下命令开放:
    firewall-cmd --zone=public --add-port=7001/tcp --permanent
    firewall-cmd --reload
    
  • SELinux设置:若SELinux启用(getenforce返回Enforcing),可能阻止WebLogic绑定端口,使用setenforce 0临时关闭(测试用),或修改/etc/selinux/config中的SELINUX=permissive永久关闭。

7. 使用WebLogic工具排查

  • 管理控制台:访问http://<WebLogic-IP>:7001/console,登录后导航至MonitoringServers,查看服务器状态(如RUNNING)、线程池(如活跃线程数)、内存使用(如堆内存占用)等指标,快速定位性能瓶颈;
  • WLST(WebLogic Scripting Tool):通过命令行脚本自动化排查,例如获取服务器健康状态:
    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查看结果;
  • JMX监控:启用JMX远程访问(修改$DOMAIN_HOME/bin/setDomainEnv.sh,添加-Dcom.sun.management.jmxremote.port=9000等参数),使用jconsoleVisualVM连接,监控线程、内存、JDBC连接池等详细指标。

8. 常见故障处理

  • 启动失败:优先查看$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语法错误)。

0