日志是定位故障的核心依据,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自带库冲突。