当Ubuntu系统上的WebLogic出现故障时,日志分析是定位问题的核心,结合系统资源监控、配置检查等步骤可系统性解决问题。以下是常见故障场景及解决方法:
日志是排查WebLogic故障的首要依据,Ubuntu下WebLogic日志默认存放在**$DOMAIN_HOME/logs**目录($DOMAIN_HOME为域根目录,可通过echo $DOMAIN_HOME确认)。关键日志文件包括:
查看日志的常用命令:
tail -f $DOMAIN_HOME/logs/server.log;grep -i "关键字" $DOMAIN_HOME/logs/server.log;vi $DOMAIN_HOME/logs/server.log(或nano、gedit等)。通过日志中的错误堆栈(如ClassNotFoundException、NullPointerException)或警告信息(如端口冲突、内存不足),可快速定位故障类型。
WebLogic依赖多个端口(如默认的管理端口7001、HTTPS端口7002、Node Manager端口5556),若端口被其他进程占用,会导致无法启动或访问。
排查端口占用:
netstat命令查看端口占用情况(Ubuntu 20.04+推荐用ss):sudo netstat -tulnp | grep <端口号> # 如sudo netstat -tulnp | grep 7001
# 或
sudo ss -tulnp | grep <端口号>
输出结果中的“PID/Program name”列显示占用端口的进程ID和名称。解决方法:
sudo kill -9 <PID> # 替换<PID>为实际进程ID
$DOMAIN_HOME/config/config.xml文件,找到对应端口配置项(如<ListenPort>)修改为未被占用的端口(如7002),保存后重启WebLogic。WebLogic的配置文件错误(如路径错误、参数配置不当)会导致启动失败,常见配置文件包括:
排查要点:
JAVA_HOME、内存参数-Xms/-Xmx)是否符合系统环境;java -version命令查看当前JDK版本,若不符合要求,需卸载旧版本并安装兼容版本(如从Oracle官网下载JDK tar.gz包,解压后配置JAVA_HOME环境变量)。startWebLogic.sh脚本中的内存参数调整JVM堆大小(如-Xms512m初始堆、-Xmx1024m最大堆),建议根据服务器内存大小合理分配(如8GB内存可设置为-Xms2048m -Xmx4096m)。线程耗尽会导致WebLogic无法响应新请求(表现为请求超时、服务器挂起),常见原因包括:
排查与解决方法:
jstack命令获取线程转储(需知道WebLogic进程ID,用ps -ef | grep weblogic查看):sudo jstack -l <PID> > thread_dump_$(date +%F_%H-%M-%S).txt
或使用kill -3 <PID>(发送SIGQUIT信号)生成Thread Dump(日志会输出到server.log)。socketAccept状态(负责接收请求,若缺失则无法接收新请求);weblogic.kernel.Default(self-tuning)):查看线程状态(BLOCKED表示阻塞,WAITING表示等待资源),若大量线程处于BLOCKED状态,需检查同步代码或数据库连接池配置。<max-capacity>50</max-capacity>、<test-connections-on-reserve>true</test-connections-on-reserve>);config.xml中修改<max-threads>参数,如<max-threads>200</max-threads>)。Node Manager用于远程管理WebLogic服务器(如启动/停止受管服务器),若启动失败,常见原因是状态文件损坏。
解决方法:
$DOMAIN_HOME/servers/<服务器名称>/data/nodemanager/目录下,文件名为<服务器名称>.state),然后重新启动Node Manager:cd $DOMAIN_HOME/servers/AdminServer/data/nodemanager # 替换<服务器名称>为实际名称
rm -f AdminServer.state # 删除状态文件
$DOMAIN_HOME/bin/startNodeManager.sh # 启动Node Manager
nodemanager.properties配置文件(位于$DOMAIN_HOME/config目录),确保ListenPort(监听端口,默认5556)和SecureListener(是否启用SSL,默认false)配置正确,若有修改需重启Node Manager。chown -R weblogic:weblogic $DOMAIN_HOME修改所有权,weblogic为用户组);ping目标服务器、telnet测试端口连通性),确保防火墙未阻塞WebLogic端口(用sudo ufw allow 7001/tcp开放端口);top、vmstat命令监控系统资源(CPU、内存、磁盘I/O),若资源占用过高,需优化应用程序或升级服务器配置。通过以上步骤,可系统性排查Ubuntu环境下WebLogic的常见故障。若问题仍未解决,建议结合日志中的具体错误信息,在WebLogic官方社区或技术论坛寻求进一步帮助。