温馨提示×

Debian中WebLogic故障排查技巧有哪些

小樊
43
2025-12-25 00:08:16
栏目: 智能运维

Debian上WebLogic故障排查技巧

一 快速定位流程

  • 查看系统层面:用tail -f /var/log/syslogjournalctl -xedmesg观察内核与系统服务事件,先捕捉启动失败、OOM、驱动加载等线索。
  • 确认进程与资源:用ps aux | grep weblogictop/htop定位占用高的Java进程;结合free -miostat -x 1检查内存与磁盘I/O压力。
  • 网络连通性:对管理端口(默认7001)执行telnet 127.0.0.1 7001nc -vz 127.0.0.1 7001;必要时用pingss -lntp | grep 7001核对监听地址与端口。
  • 服务状态与启停:若以systemd托管,用systemctl status weblogicsystemctl restart weblogic;异常时优先保留现场(不要立即重启),先抓取日志与线程/堆信息。
  • 配置文件核对:检查**$DOMAIN_HOME/config/config.xml关键配置(监听地址、端口、数据源、集群),以及环境变量(如JAVA_HOME、MW_HOME、DOMAIN_HOME、PATH**)。

二 日志分析与定位

  • 日志位置与类型:
    • 域日志:$DOMAIN_HOME/servers//logs/.log
    • 访问日志:$MW_HOME/user_projects/domains//servers//logs/access.log
    • 诊断与GC:开启GC日志(见下一节),并关注GC前后是否出现java.lang.OutOfMemoryError
  • 高效检索与统计:
    • 实时跟踪:tail -f server.log | grep -i error
    • 错误计数与时间窗:awk ‘/error/ {print $1,$2,$3}’ server.log | grep “2025-12-25” | wc -l
  • 日志轮转与归档:用logrotate管理体积,避免单日志过大影响分析;必要时接入Logstash/Graylog做集中化与告警。
  • 控制台侧排查:通过WebLogic管理控制台核对应用部署状态、数据源连通性、线程与连接池使用情况。

三 内存与线程瓶颈排查

  • 区分OOM类型:
    • Java堆OOM:抛出java.lang.OutOfMemoryError,通常出现在server.log或应用日志;
    • 本机内存OOM:JVM写“native memory allocation”失败并退出,可能伴随SIGABRT与core dump。
  • 抓取诊断数据:
    • 线程与锁:jstack > threaddump.txt(多次间隔采样,观察RUNNABLE/BLOCKED/WAITING);
    • 堆内存:jmap -dump:format=b,file=heap.hprof (配合MAT/VisualVM分析泄漏疑点);
    • GC行为:开启**-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:**,观察回收前后占用、Full GC频率与停顿。
  • 常见修复路径:
    • 调整JVM:-Xms/-Xmx(如**-Xms4g -Xmx4g**)、JDK 8用**-XX:MaxMetaspaceSize**,必要时优化新生代/老年代比例;
    • 代码与配置:排查缓存无限增长、会话/连接泄漏;合理设置连接池、语句缓存、超时
    • 资源扩容:物理内存不足时先增配内存,再评估堆与元空间上限。

四 网络连通与端口可达

  • 监听与进程绑定:用ss -lntp | grep 7001确认0.0.0.0:7001或指定IP绑定;若仅127.0.0.1监听,外部将无法访问。
  • 本机连通性:执行telnet 127.0.0.1 7001nc -vz 127.0.0.1 7001验证服务是否在本机可达。
  • 跨机连通性:从客户端telnet <server_ip> 7001nc -vz <server_ip> 7001;若不通,排查iptables/firewalld、安全组、路由与上游负载均衡策略。
  • 管理通道:若启用T3/T3S管理通道,确保相应端口开放且协议白名单正确,避免被误拦截。

五 实用命令清单与排错模板

  • 一键巡检脚本示例(按需调整路径与端口):
    • 查看资源与端口:
      • top -b -d 1 -n 5 | head -20
      • free -m && iostat -x 1 5
      • ss -lntp | grep 7001
    • 日志与关键字:
      • tail -n 200 $DOMAIN_HOME/servers//logs/.log | grep -i -E “error|exception|outofmemory”
      • tail -f $DOMAIN_HOME/servers/*/logs/access.log | awk ‘{print $4,$7,$9}’ | sort | uniq -c | sort -nr | head
    • JVM诊断:
      • jps -v
      • jstack > threaddump_$(date +%F_%H%M%S).txt
      • jmap -heap
      • jstat -gc 1000 10
  • 排错模板:
    1. 现象与影响范围(单实例/集群、管理端/业务端)
    2. 时间点与变更记录(部署、参数、补丁、网络/存储变更)
    3. 已采集数据(系统日志、WebLogic日志、线程/堆dump、GC日志、网络连通性)
    4. 根因假设与验证步骤(如回滚变更、限流降级、参数回退)
    5. 修复与验证(观察15–30分钟关键指标:错误率、RT、线程数、GC次数/停顿、CPU/内存)
    6. 预防与优化(监控告警、连接池与超时基线、日志轮转与保留策略、容量规划)

0