Debian上WebLogic故障排查指南
一 快速定位流程
- 系统层面
- 查看系统日志:tail -f /var/log/syslog;内核与启动信息:dmesg 或 journalctl -xe。
- 检查进程与资源:ps aux | grep java、top/htop;磁盘与inode:df -h、df -i。
- 网络连通与端口可达:对管理端口(默认 7001)执行 nc -vz 127.0.0.1 7001 或 telnet 127.0.0.1 7001;必要时检查防火墙/安全组。
- 应用层面
- 查看 WebLogic 日志:优先关注 $DOMAIN_HOME/servers//logs/server.log、$DOMAIN_HOME/servers//logs/.log、$DOMAIN_HOME/servers//logs/access.log,使用 tail -f、grep -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 65536、ulimit -s 8192(在启动脚本或服务单元环境中设置)。
- 日志轮转与容量
- 使用 logrotate 管理 server.log/access.log 的轮转与归档,防止磁盘被日志占满导致实例异常。
五 一键排障命令清单
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
ss -lntp | grep 7001 || netstat -tulpen | grep 7001
nc -vz 127.0.0.1 7001 || telnet 127.0.0.1 7001
ps -ef | grep java
jps -v
jstack <PID> > /tmp/jstack-$(date +%F).txt
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
以上流程覆盖从系统到应用、从日志到调优的关键环节,按“先系统后应用、先日志后配置”的顺序执行,可高效定位并恢复大多数 Debian 上的 WebLogic 故障。