日志是定位故障的核心依据,WebLogic的日志文件通常位于$DOMAIN_HOME/servers/your_server_name/logs目录下(如server.log)。通过分析日志中的错误信息(如java.lang.NullPointerException、ClassNotFoundException)或异常堆栈,可快速定位问题根源(如类加载失败、数据库连接异常)。
WebLogic依赖多个端口(默认管理端口7001、节点管理器端口5556、应用服务器端口7002等),若端口被其他进程占用,会导致启动失败或服务不可用。使用以下命令检查端口占用情况:
sudo netstat -tulnp | grep <端口号>
若端口被占用,可选择终止占用进程(kill -9 <PID>)或修改WebLogic端口配置(编辑config.xml或nodemanager.properties文件)。
WebLogic的配置文件(如config.xml、nodemanager.properties、setEnv.sh)需确保语法正确、参数合理。常见配置问题包括:
config.xml中服务器名称、集群配置错误;nodemanager.properties中监听端口(ListenPort)与防火墙冲突;setEnv.sh中JAVA_HOME路径错误(需指向Ubuntu上安装的JDK目录,如/usr/lib/jvm/java-8-openjdk-amd64)。WebLogic对JDK版本有严格要求(如WebLogic 12c需JDK 8及以上),需确保:
JAVA_HOME环境变量设置正确(在setEnv.sh中添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64);startWebLogic.sh)使用正确的JDK路径(可通过./startWebLogic.sh -version验证)。系统资源不足(内存、磁盘空间、文件描述符)会导致WebLogic启动缓慢或崩溃:
free -h查看内存使用情况,确保剩余内存足够(建议预留1GB以上);df -h检查根分区或$DOMAIN_HOME所在分区,剩余空间需大于10GB;ulimit -n查看当前限制(建议设置为65535),若不足可通过修改/etc/security/limits.conf提升(添加* soft nofile 65535、* hard nofile 65535)。若日志中出现java.sql.SQLException: Listener refused the connection,需检查:
systemctl status mysql);config.xml中的jdbc参数,如URL、用户名、密码);3306)。若节点管理器无法与管理员服务器通信,需检查:
5556)是否开放(sudo ufw allow 5556);nodemanager.properties中的ListenPort是否正确;config.xml中的<administration-server>标签)是否可达。若启动时间过长(超过10分钟),可能是java.security文件中的随机数生成器导致。修改$JAVA_HOME/jre/lib/security/java.security,将:
securerandom.source=file:/dev/urandom
改为:
securerandom.source=file:/dev/./urandom
可显著提升启动速度。
若日志中出现java.lang.OutOfMemoryError: Java heap space,需调整JVM内存参数(在startWebLogic.sh中添加):
-Xms1024m -Xmx2048m -XX:MaxPermSize=512m
其中-Xms为初始堆大小,-Xmx为最大堆大小(建议为初始大小的1.5-2倍)。
若应用响应缓慢,可使用jstack工具分析线程状态:
jstack <WebLogic_PID> > thread_dump.txt
查看thread_dump.txt中的死锁(deadlock)或长时间等待(BLOCKED)线程,优化代码或调整线程池大小(config.xml中的<thread-pool>标签)。
若日志中出现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秒)。若部署时出现weblogic.management.deploy.DeploymentException: Failed to deploy,需检查:
unzip -t验证);console中选择Deployments→Install,指定正确路径);javax.servlet jar包,需添加到WEB-INF/lib目录)。若应用出现java.lang.LinkageError或ClassNotFoundException,需检查类加载器层次结构(通过console→Servers→your_server→Configuration→Class Loader),建议将应用设置为父类加载器优先(Parent Last),避免与WebLogic自带库冲突。