如何在Ubuntu上通过WebLogic快速排查并解决系统故障的问题?

更新于
2026-09-30 21:48:40
2阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

:Ubuntu 上 WebLogic 故障让人抓狂的痛点

WebLogic 在 Ubuntu 上出现启动失败、访问超时或频繁异常时往往会让运维人员陷入以下困境:

  • 日志散落不明。找不到关键错误信息,浪费大量时间在无谓的 grep 中。
  • 端口被占用导致服务无法启动,却不知哪个进程在“捣乱”。
  • JVM 堆内存、垃圾回收参数调错。要么频繁 Full GC,要么直接 OOM。
  • 磁盘被日志塞满。程序性能骤降,却又怕误删关键排查线索。不过,
  • 安装或部署阶段 JDK 配置错漏、boot.properties 泄露。认证总是失败,

针对这些痛点,下面提供一套快速定位 → 高效修复 → 防御预防的实战教程。

如何在Ubuntu上通过WebLogic快速排查并解决系统故障的问题?

一、快速定位与日志分析

1. 确认域目录与日志位置

先通过环境变量定位域根目录:

$ echo $DOMAIN_HOME
# 例如返回 /opt/weblogic/user_projects/domains/base_domain

所有主要日志集中在 $DOMAIN_HOME/logs 目录下:

  • server.log:服务器启动、运行及错误信息。
  • access.log:HTTP 请求访问日志,用于排查请求响应问题。
  • {ManagedServer}.log / stdout.log / stderr.log :各托管服务器的独立输出。
  • diagnostic.log:WebLogic 自身诊断信息。

2. 常用日志检索命令

$ tail -f $DOMAIN_HOME/logs/server.log # 动态跟踪最新日志
$ grep -i -E 'error|exception|fail' $DOMAIN_HOME/logs/server.log # 错误关键字过滤
$ less $DOMAIN_HOME/logs/server.log # 分页回溯上下文
$ awk '/ERROR/{print NR。$0}' $DOMAIN_HOME/logs/server.log | head -20 # 错误行号+内容

3. 检查控制台与启动脚本输出

如果页面打不开或服务卡住先看控制台日志: $ tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log $ tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.out $ ps -ef | grep weblogic # 查看进程是否真的起来了

1. 端口冲突导致启动失败

痛点:服务明明已经启动却无法访问,端口被占用却找不到罪魁祸首。不过,

  • 检查占用情况这方面。
    $ ss -ltnp | grep :7001 # 或 netstat -tulnp | grep :7001
    $ lsof -i :7001
    
  • - 若是其他 WebLogic 实例或其它应用占用: – 停掉冲突进程或修改该实例的监听端口。- 若是程序服务误占用:调整程序服务或使用防火墙放行后更换临时端口验证。
  • - 验证防火墙:
    $ sudo ufw status # Ubuntu 默认防火墙
    $ sudo ufw allow 7001/tcp # 放行所需端口
    

2. JVM 堆内存/垃圾回收不当导致 OOM 或频繁 Full GC

痛点:调了一堆-Xms/-Xmx 参数仍然内存飙升,甚至直接崩溃。

  • - 查看当前启动参数:
    $ ps -ef | grep java | grep weblogic
    # 输出类似:java -Xms2g -Xmx4g ... weblogic.Server
    
  • - 基础调优建议: – 初始堆大小 建议设为最大堆大小 的 **50%~70%**;– 新生代 不超过堆大小的 **1/3**;– 垃圾回收器选择: · 对于吞吐量优先可使用 **ParallelGC**;· 对于低延迟敏感场景尝试 **G1GC**。
  • - 开启 GC 日志便于事后分析:
    -Xlog:gc*:file=$DOMAIN_HOME/logs/gc.log:time,tags:filecount=5。filesize=10M
    
  • - 若出现 `java.lang.OutOfMemoryError: Java heap space`: – 加大 `-Xmx`;若仍不行则检查是否存在内存泄漏。其实,
  • - 若出现 `java.lang.StackOverflowError`: – 调整栈大小 `-Xss`或检查递归深度。

3. 身份验证失败

痛点:启动卡在 “Auntication denied”,却不知道哪里写错密码了。

  • - 检查 `/servers//security/boot.properties` 内容是否为明文且正确。若加密过则需要重新生成:
    $ java weblogic.security.internalencryption.ClearOrEncryptedService \
    encrypt {plain_password}> boot.properties.temp
    # 把生成的内容替换原文件中的 password 行
    

4. 部署描述符错误或类方法缺失

  • - 查看 `server.log` 中类似 `Deployment descriptor error:`、`ClassNotFoundException:`、`NoSuchMethodError:` 的堆栈。– 对应方法:确认应用的 `weblogic.xml`。`web.xml`,`application.xml` 没有语法错误;检查所依赖的 jar 是否放在正确的库目录 或全局共享库。– 清理缓存后重新部署: bash rm -rf $DOMAIN_HOME/servers//tmp/* rm -rf $DOMAIN_HOME/servers//cache/*

 痛点:日志文件一天天增长。磁盘告警频繁,又怕删错影响后续排查。说起来,

  • - 配置 logrotate:创建 /etc/logrotate.d/weblogic conf /OPT/WebLogic/user_projects/domains/*/logs/*.log { daily # 每天轮转 rotate 7 # 保留最近7天 compress # gzip 压缩旧日志 missingok # 日志不存在也不报错 notifempty # 空文件不轮转 create 640 weblogic weblogic # 新建文件权限和所属使用者组 sharedscripts # 脚本只执行一次 postrotate # 向管理员发送通知邮件或触发告警程序 logger "WebLogic logs rotated" endscript } shell

sudo logrotate -f /etc/logrotate.d/weblogic # 测试立即生效

  • - 日志级别调节:在 $DOMAIN_HOME/config/config.xml 中适当降低某些模块的日志级别。例如把 false/ 或将特定 logger 的 severity 改为 Warning。
  • - 集中式日志方案:将 WebLogic 日船送到 ELK、Graylog 或 Loki,这样本地磁盘压力小且可跨机器关联分析。

    如何在Ubuntu上通过WebLogic快速排查并解决系统故障的问题?

    step‑by‑step 操作流程
    1. **确认服务状态**: ps -ef \| grep weblogic;若无进程则检查启动脚本返回码。<> li>
    2. **检查端口监听**: ss -ltnp \| grep :7001 、 :7002。<> li>
    3. **查看关键错误**: tail -n 50 $DOMAIN_HOME/logs/server.log;再执行 grep -i error …,<> li>
    4. **资源嗅探**: top / htop 、 free -h 、 iostat -x 1 、 vmstat 1。<> li>
    5. **JVM 参数核对**: ps …\| grep java;老实说,根据需要调节-Xms/-Xmx/-XX:+UseG1GC。<> li>
    6. **配置文件审计**: diff 配置副本与默认模板;主要关注 config.xml 中 listen-address/listen-port、JD娱乐 数据源、安全 realms。<> li>
    7. **重新尝试启动**:先释放资源或调小堆 执行 startWebLogic.sh。话说回来,<> li>
    8. **验证访问**: curl http://localhost:7001/console;老实说,观察返回码及页面。<>> ol>

      注意每一步完成后记录结果,便于后续升级或交给值班同事。

      常用方法与预防措施——把“事后诸葛亮”变成“事前孔明” <="" h5<="" p=""> 常用方法与预防措施——把“事后诸葛亮”变成“事前孔明”>

  • 标签:Ubuntu

    :Ubuntu 上 WebLogic 故障让人抓狂的痛点

    WebLogic 在 Ubuntu 上出现启动失败、访问超时或频繁异常时往往会让运维人员陷入以下困境:

    • 日志散落不明。找不到关键错误信息,浪费大量时间在无谓的 grep 中。
    • 端口被占用导致服务无法启动,却不知哪个进程在“捣乱”。
    • JVM 堆内存、垃圾回收参数调错。要么频繁 Full GC,要么直接 OOM。
    • 磁盘被日志塞满。程序性能骤降,却又怕误删关键排查线索。不过,
    • 安装或部署阶段 JDK 配置错漏、boot.properties 泄露。认证总是失败,

    针对这些痛点,下面提供一套快速定位 → 高效修复 → 防御预防的实战教程。

    如何在Ubuntu上通过WebLogic快速排查并解决系统故障的问题?

    一、快速定位与日志分析

    1. 确认域目录与日志位置

    先通过环境变量定位域根目录:

    $ echo $DOMAIN_HOME
    # 例如返回 /opt/weblogic/user_projects/domains/base_domain
    

    所有主要日志集中在 $DOMAIN_HOME/logs 目录下:

    • server.log:服务器启动、运行及错误信息。
    • access.log:HTTP 请求访问日志,用于排查请求响应问题。
    • {ManagedServer}.log / stdout.log / stderr.log :各托管服务器的独立输出。
    • diagnostic.log:WebLogic 自身诊断信息。

    2. 常用日志检索命令

    $ tail -f $DOMAIN_HOME/logs/server.log # 动态跟踪最新日志
    $ grep -i -E 'error|exception|fail' $DOMAIN_HOME/logs/server.log # 错误关键字过滤
    $ less $DOMAIN_HOME/logs/server.log # 分页回溯上下文
    $ awk '/ERROR/{print NR。$0}' $DOMAIN_HOME/logs/server.log | head -20 # 错误行号+内容
    

    3. 检查控制台与启动脚本输出

    如果页面打不开或服务卡住先看控制台日志: $ tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log $ tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.out $ ps -ef | grep weblogic # 查看进程是否真的起来了

    1. 端口冲突导致启动失败

    痛点:服务明明已经启动却无法访问,端口被占用却找不到罪魁祸首。不过,

    • 检查占用情况这方面。
      $ ss -ltnp | grep :7001 # 或 netstat -tulnp | grep :7001
      $ lsof -i :7001
      
    • - 若是其他 WebLogic 实例或其它应用占用: – 停掉冲突进程或修改该实例的监听端口。- 若是程序服务误占用:调整程序服务或使用防火墙放行后更换临时端口验证。
    • - 验证防火墙:
      $ sudo ufw status # Ubuntu 默认防火墙
      $ sudo ufw allow 7001/tcp # 放行所需端口
      

    2. JVM 堆内存/垃圾回收不当导致 OOM 或频繁 Full GC

    痛点:调了一堆-Xms/-Xmx 参数仍然内存飙升,甚至直接崩溃。

    • - 查看当前启动参数:
      $ ps -ef | grep java | grep weblogic
      # 输出类似:java -Xms2g -Xmx4g ... weblogic.Server
      
    • - 基础调优建议: – 初始堆大小 建议设为最大堆大小 的 **50%~70%**;– 新生代 不超过堆大小的 **1/3**;– 垃圾回收器选择: · 对于吞吐量优先可使用 **ParallelGC**;· 对于低延迟敏感场景尝试 **G1GC**。
    • - 开启 GC 日志便于事后分析:
      -Xlog:gc*:file=$DOMAIN_HOME/logs/gc.log:time,tags:filecount=5。filesize=10M
      
    • - 若出现 `java.lang.OutOfMemoryError: Java heap space`: – 加大 `-Xmx`;若仍不行则检查是否存在内存泄漏。其实,
    • - 若出现 `java.lang.StackOverflowError`: – 调整栈大小 `-Xss`或检查递归深度。

    3. 身份验证失败

    痛点:启动卡在 “Auntication denied”,却不知道哪里写错密码了。

    • - 检查 `/servers//security/boot.properties` 内容是否为明文且正确。若加密过则需要重新生成:
      $ java weblogic.security.internalencryption.ClearOrEncryptedService \
      encrypt {plain_password}> boot.properties.temp
      # 把生成的内容替换原文件中的 password 行
      

    4. 部署描述符错误或类方法缺失

    • - 查看 `server.log` 中类似 `Deployment descriptor error:`、`ClassNotFoundException:`、`NoSuchMethodError:` 的堆栈。– 对应方法:确认应用的 `weblogic.xml`。`web.xml`,`application.xml` 没有语法错误;检查所依赖的 jar 是否放在正确的库目录 或全局共享库。– 清理缓存后重新部署: bash rm -rf $DOMAIN_HOME/servers//tmp/* rm -rf $DOMAIN_HOME/servers//cache/*

     痛点:日志文件一天天增长。磁盘告警频繁,又怕删错影响后续排查。说起来,

    • - 配置 logrotate:创建 /etc/logrotate.d/weblogic conf /OPT/WebLogic/user_projects/domains/*/logs/*.log { daily # 每天轮转 rotate 7 # 保留最近7天 compress # gzip 压缩旧日志 missingok # 日志不存在也不报错 notifempty # 空文件不轮转 create 640 weblogic weblogic # 新建文件权限和所属使用者组 sharedscripts # 脚本只执行一次 postrotate # 向管理员发送通知邮件或触发告警程序 logger "WebLogic logs rotated" endscript } shell

    sudo logrotate -f /etc/logrotate.d/weblogic # 测试立即生效

  • - 日志级别调节:在 $DOMAIN_HOME/config/config.xml 中适当降低某些模块的日志级别。例如把 false/ 或将特定 logger 的 severity 改为 Warning。
  • - 集中式日志方案:将 WebLogic 日船送到 ELK、Graylog 或 Loki,这样本地磁盘压力小且可跨机器关联分析。

    如何在Ubuntu上通过WebLogic快速排查并解决系统故障的问题?

    step‑by‑step 操作流程
    1. **确认服务状态**: ps -ef \| grep weblogic;若无进程则检查启动脚本返回码。<> li>
    2. **检查端口监听**: ss -ltnp \| grep :7001 、 :7002。<> li>
    3. **查看关键错误**: tail -n 50 $DOMAIN_HOME/logs/server.log;再执行 grep -i error …,<> li>
    4. **资源嗅探**: top / htop 、 free -h 、 iostat -x 1 、 vmstat 1。<> li>
    5. **JVM 参数核对**: ps …\| grep java;老实说,根据需要调节-Xms/-Xmx/-XX:+UseG1GC。<> li>
    6. **配置文件审计**: diff 配置副本与默认模板;主要关注 config.xml 中 listen-address/listen-port、JD娱乐 数据源、安全 realms。<> li>
    7. **重新尝试启动**:先释放资源或调小堆 执行 startWebLogic.sh。话说回来,<> li>
    8. **验证访问**: curl http://localhost:7001/console;老实说,观察返回码及页面。<>> ol>

      注意每一步完成后记录结果,便于后续升级或交给值班同事。

      常用方法与预防措施——把“事后诸葛亮”变成“事前孔明” <="" h5<="" p=""> 常用方法与预防措施——把“事后诸葛亮”变成“事前孔明”>

  • 标签:Ubuntu