Ubuntu环境下WebLogic故障排查指南
日志是故障定位的核心依据,WebLogic的日志文件集中存储在Ubuntu域目录的logs子目录中(如/home/weblogic/user_projects/domains/base_domain/logs/server.log)。通过tail -f server.log实时查看最新日志,或使用grep "ERROR" server.log过滤错误信息,重点关注异常堆栈(如java.lang.OutOfMemoryError)、端口冲突提示(如Address already in use)或配置加载失败(如Failed to load configuration)等内容,快速定位故障根源。
WebLogic依赖多个端口(如管理服务器默认7001、Node Manager默认5556)进行通信。使用netstat -tulnp | grep <端口号>(如netstat -tulnp | grep 7001)检查端口占用情况:
apache2),可通过kill -9 <PID>终止占用进程,或在WebLogic配置文件(config.xml)中修改<ListenPort>参数更换端口;ufw)是否放行该端口(如sudo ufw allow 7001/tcp)。内存不足是WebLogic启动失败的常见原因。编辑启动脚本(bin/startWebLogic.sh),调整JVM内存参数(如-Xms512m -Xmx1024m,分别设置初始堆内存和最大堆内存),避免设置过大导致OutOfMemoryError。
同时,确认JDK版本与WebLogic版本兼容(如WebLogic 12c需JDK 8及以上),通过java -version验证JDK版本,若版本不符,修改setDomainEnv.sh中的JAVA_HOME变量指向正确JDK路径。
WebLogic对域目录及文件的权限敏感,需确保启动用户(如weblogic)对域目录(如/home/weblogic/user_projects/domains/base_domain)拥有读、写、执行权限。使用chown -R weblogic:weblogic /home/weblogic/user_projects/domains/base_domain修改所有权,避免因权限不足导致的“Permission denied”错误。
当WebLogic无法响应新请求时,可能是执行线程耗尽。通过以下步骤排查:
jstack <PID>(PID为WebLogic进程ID,可通过ps -ef | grep weblogic获取)收集线程转储(Thread Dump),每3-5秒收集3次;BLOCKED状态(如等待数据库连接),需检查数据库连接池配置(datasource的最大连接数);STUCK线程(运行时间超过600秒),需检查业务代码是否存在死循环或同步锁竞争。Node Manager用于远程管理受管服务器,若无法启动,需检查:
nodemanager.properties配置文件(位于域目录的config子目录),确认ListenPort(默认5556)和SecureListener(是否启用SSL)参数正确;/home/weblogic/user_projects/domains/base_domain/servers/<服务器名称>/data/nodemanager/<服务器名称>.state),重启Node Manager以重置状态。若应用程序无法连接数据库,需检查:
config.xml中的<jdbc-data-source>),确认JNDI名称、数据库URL(如jdbc:mysql://localhost:3306/mydb)、用户名/密码正确;systemctl status mysql),确保数据库已启动;max-capacity、initial-capacity),避免设置过小导致连接不足。