温馨提示×

Debian上WebLogic的故障排查指南

小樊
35
2026-01-05 16:34:23
栏目: 智能运维

Debian上WebLogic故障排查指南

一 快速定位流程

  • 系统层面
    • 查看系统日志:tail -f /var/log/syslog;内核与启动信息:dmesgjournalctl -xe
    • 检查进程与资源:ps aux | grep javatop/htop;磁盘与inode:df -hdf -i
    • 网络连通与端口可达:对管理端口(默认 7001)执行 nc -vz 127.0.0.1 7001telnet 127.0.0.1 7001;必要时检查防火墙/安全组。
  • 应用层面
    • 查看 WebLogic 日志:优先关注 $DOMAIN_HOME/servers//logs/server.log$DOMAIN_HOME/servers//logs/.log$DOMAIN_HOME/servers//logs/access.log,使用 tail -fgrep -i error 快速筛查。
    • 控制台与 WLST:通过 http://:7001/console 检查部署与应用状态;必要时用 WLST 连接并查看运行时 MBean(如线程、JDBC)。

二 常见故障与处理要点

  • 端口冲突(管理端口 7001 被占用)
    • 诊断:执行 netstat -tulpen | grep 7001 定位占用进程 PID。
    • 处理:结束冲突进程(如 kill -9 ),或修改 config.xml 为未占用端口并重启。
  • 启动卡住或无响应
    • 检查系统资源(CPU/内存/磁盘)是否紧张;排查配置错误(如 config.xml 语法、路径、端口)、网络连通性、JVM 异常等。
  • JVM 内存问题
    • 现象:日志出现 OutOfMemoryError(堆、元空间/永久代、GC 开销超限等)。
    • 处理:在 setDomainEnv.sh 中调整 -Xms/-Xmx,Java 8 及更早版本关注 -XX:MaxPermSize,Java 8+ 关注 -XX:MetaspaceSize/-XX:MaxMetaspaceSize;必要时开启 GC 日志 分析停顿与泄漏。
  • 数据库连接失败
    • 检查 JDBC URL、驱动版本与放置位置(如放入 domain/lib)、凭据与网络;在控制台数据源执行“测试连接”,并核查连接池参数(初始/最大连接、超时、验证)。
  • 类加载冲突
    • 现象:NoClassDefFoundError/ClassCastException 等。
    • 处理:在 weblogic.xml 使用 优先加载应用内 JAR,或调整类加载顺序以隔离冲突依赖。

三 日志与性能分析

  • 日志位置与检索
    • 服务器日志:$DOMAIN_HOME/servers//logs/server.log
    • 访问日志:$DOMAIN_HOME/servers//logs/access.log
    • 启动日志:$DOMAIN_HOME/bin/startWebLogic.log
    • 常用检索:实时查看 tail -f server.log;关键字过滤 grep -i “error|exception” server.log;按时间统计错误 awk ‘/error/ {print $1,$2,$3}’ server.log | grep “2025-06-20”
  • 性能与线程
    • 系统侧:top/htop(CPU/内存)、iostat(磁盘 I/O)、free -h(内存)、mpstat(CPU 细分)。
    • 运行时:在控制台或 WLST 查看线程池与 JDBC 运行时指标;关注 StuckThread(长时阻塞线程)并优化慢查询/连接泄漏。
  • GC 与内存泄漏
    • 开启 GC 日志(如 -Xloggc:/path/gc.log -XX:+PrintGCDetails),分析停顿与回收效率;结合堆转储(Heap Dump)定位对象泄漏。

四 运行环境与系统配置

  • 支持与兼容性
    • WebLogic 官方支持重点在 Oracle Linux 等Debian 为社区/自托管常见选择,生产使用前建议充分回归测试与加固。
  • 资源限制与稳定性
    • 调整 ulimit(文件描述符、栈大小等)以避免“Too many open files”、线程创建失败等问题;示例:ulimit -n 65536ulimit -s 8192(在启动脚本或服务单元环境中设置)。
  • 日志轮转与容量
    • 使用 logrotate 管理 server.log/access.log 的轮转与归档,防止磁盘被日志占满导致实例异常。

五 一键排障命令清单

# 1) 系统健康
sudo tail -n50 -f /var/log/syslog
dmesg -T | tail -50
sudo journalctl -xe --since "5 minutes ago"
free -h && df -h && df -i
top -b -d 2 -n 20 | head

# 2) 端口与网络(管理端口示例:7001)
ss -lntp | grep 7001 || netstat -tulpen | grep 7001
nc -vz 127.0.0.1 7001 || telnet 127.0.0.1 7001

# 3) 进程与线程
ps -ef | grep java
jps -v
jstack <PID> > /tmp/jstack-$(date +%F).txt

# 4) WebLogic 日志与关键字
DOMAIN_HOME=/opt/weblogic/user_projects/domains/base_domain
tail -n100 -f $DOMAIN_HOME/servers/AdminServer/logs/server.log
grep -i "error\|exception\|stuck" $DOMAIN_HOME/servers/AdminServer/logs/server.log | tail -50
tail -f $DOMAIN_HOME/bin/startWebLogic.log

# 5) JDBC 连通性(示例)
# 在域 lib 放置驱动后,用简单 JDBC 程序或控制台“测试连接”验证 URL/账号/驱动版本

以上流程覆盖从系统到应用、从日志到调优的关键环节,按“先系统后应用、先日志后配置”的顺序执行,可高效定位并恢复大多数 Debian 上的 WebLogic 故障。

0