温馨提示×

ubuntu上weblogic的故障排查指南

小樊
49
2025-10-08 05:01:54
栏目: 智能运维

Ubuntu上WebLogic故障排查指南

一、故障排查基础流程

1. 查看日志文件

日志是定位故障的核心依据,WebLogic的日志文件通常位于$DOMAIN_HOME/servers/your_server_name/logs目录下(如server.log)。通过分析日志中的错误信息(如java.lang.NullPointerExceptionClassNotFoundException)或异常堆栈,可快速定位问题根源(如类加载失败、数据库连接异常)。

2. 确认端口占用

WebLogic依赖多个端口(默认管理端口7001、节点管理器端口5556、应用服务器端口7002等),若端口被其他进程占用,会导致启动失败或服务不可用。使用以下命令检查端口占用情况:

sudo netstat -tulnp | grep <端口号> 

若端口被占用,可选择终止占用进程kill -9 <PID>)或修改WebLogic端口配置(编辑config.xmlnodemanager.properties文件)。

3. 检查配置文件

WebLogic的配置文件(如config.xmlnodemanager.propertiessetEnv.sh)需确保语法正确、参数合理。常见配置问题包括:

  • config.xml中服务器名称、集群配置错误;
  • nodemanager.properties中监听端口(ListenPort)与防火墙冲突;
  • setEnv.shJAVA_HOME路径错误(需指向Ubuntu上安装的JDK目录,如/usr/lib/jvm/java-8-openjdk-amd64)。

4. 验证JDK兼容性

WebLogic对JDK版本有严格要求(如WebLogic 12c需JDK 8及以上),需确保:

  • Ubuntu上安装的JDK版本与WebLogic兼容;
  • JAVA_HOME环境变量设置正确(在setEnv.sh中添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64);
  • 启动脚本(startWebLogic.sh)使用正确的JDK路径(可通过./startWebLogic.sh -version验证)。

5. 检查系统资源

系统资源不足(内存、磁盘空间、文件描述符)会导致WebLogic启动缓慢或崩溃:

  • 内存:使用free -h查看内存使用情况,确保剩余内存足够(建议预留1GB以上);
  • 磁盘空间:使用df -h检查根分区或$DOMAIN_HOME所在分区,剩余空间需大于10GB;
  • 文件描述符:使用ulimit -n查看当前限制(建议设置为65535),若不足可通过修改/etc/security/limits.conf提升(添加* soft nofile 65535* hard nofile 65535)。

二、常见故障及解决方法

1. 启动失败

(1)无法连接到数据库

若日志中出现java.sql.SQLException: Listener refused the connection,需检查:

  • 数据库服务是否启动(systemctl status mysql);
  • 数据库连接池配置(config.xml中的jdbc参数,如URL、用户名、密码);
  • 防火墙是否允许WebLogic服务器访问数据库端口(如MySQL默认3306)。

(2)节点管理器无法访问

若节点管理器无法与管理员服务器通信,需检查:

  • 节点管理器端口(默认5556)是否开放(sudo ufw allow 5556);
  • nodemanager.properties中的ListenPort是否正确;
  • 管理员服务器URL(config.xml中的<administration-server>标签)是否可达。

(3)启动缓慢

若启动时间过长(超过10分钟),可能是java.security文件中的随机数生成器导致。修改$JAVA_HOME/jre/lib/security/java.security,将:

securerandom.source=file:/dev/urandom 

改为:

securerandom.source=file:/dev/./urandom 

可显著提升启动速度。

2. 性能瓶颈

(1)内存溢出(OOM)

若日志中出现java.lang.OutOfMemoryError: Java heap space,需调整JVM内存参数(在startWebLogic.sh中添加):

-Xms1024m -Xmx2048m -XX:MaxPermSize=512m 

其中-Xms为初始堆大小,-Xmx为最大堆大小(建议为初始大小的1.5-2倍)。

(2)线程阻塞

若应用响应缓慢,可使用jstack工具分析线程状态:

jstack <WebLogic_PID> > thread_dump.txt 

查看thread_dump.txt中的死锁deadlock)或长时间等待BLOCKED)线程,优化代码或调整线程池大小(config.xml中的<thread-pool>标签)。

(3)数据库连接池耗尽

若日志中出现java.sql.SQLRecoverableException: IO Error: Connection reset,需调整数据库连接池参数(config.xml中的<jdbc-connection-pool>标签):

  • 增加max-capacity(最大连接数,如20);
  • 设置test-connections-on-reserve="true"(借用连接时测试有效性);
  • 减少inactive-connection-timeout-seconds(闲置连接超时时间,如300秒)。

3. 部署问题

(1)应用无法部署

若部署时出现weblogic.management.deploy.DeploymentException: Failed to deploy,需检查:

  • 应用WAR/EAR文件是否完整(可通过unzip -t验证);
  • 部署路径是否正确(console中选择DeploymentsInstall,指定正确路径);
  • 应用依赖库是否齐全(如缺少javax.servlet jar包,需添加到WEB-INF/lib目录)。

(2)类加载冲突

若应用出现java.lang.LinkageErrorClassNotFoundException,需检查类加载器层次结构(通过consoleServersyour_serverConfigurationClass Loader),建议将应用设置为父类加载器优先Parent Last),避免与WebLogic自带库冲突。

0