Ubuntu中WebLogic的故障排查
小樊
39
2025-12-20 16:11:39
Ubuntu下WebLogic故障排查清单
一 快速定位路径与日志
- 日志优先原则:先看错误与异常堆栈,再看访问与诊断信息。
- 常用日志路径与用途(WebLogic 9+):
- 域日志:$MW_HOME/user_projects/domains/<domain_name>/servers//logs/<domain_name>.log(跨服务器汇总,便于发现全局异常)
- 服务器日志:$MW_HOME/user_projects/domains/<domain_name>/servers//logs/.log(启动、关闭、运行期错误)
- 访问日志:$MW_HOME/user_projects/domains/<domain_name>/servers//logs/access.log(HTTP请求记录,定位4xx/5xx)
- 诊断日志(开发模式):-diagnostic.log(更细粒度的调试信息)
- 高效查看命令示例:
- 实时跟踪:tail -f $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
- 关键字定位:grep -n “ERROR|Exception” $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
- 上下文查看:grep -C 10 “OutOfMemoryError” $DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
- 统计某日错误数:awk ‘/error/ {print $1,$2,$3}’ $DOMAIN_HOME/…/AdminServer.log | grep “2025-12-20”
以上路径与用法适用于Linux/Ubuntu环境,日志格式与字段含义可参考官方常用约定。
二 启动失败与卡住的常见原因与处理
- 端口占用:管理端口常见为7001/7002(HTTP/HTTPS),若被占用会导致启动失败或端口冲突。
- 检查:ss -ltnp | grep -E ‘7001|7002’
- 处理:释放占用进程或修改域/服务器端口配置后重启。
- 权限与文件访问:域目录、日志目录、嵌入式LDAP等目录权限不当会导致初始化失败(如EmbeddedLDAP初始化异常)。
- 处理:确保启动用户对域目录及子目录拥有读写执行权限;必要时校验**/tmp**、嵌入式LDAP数据目录权限。
- 配置错误:如startWebLogic.sh、setDomainEnv.sh、config.xml路径或参数错误。
- 处理:核对脚本中的JAVA_HOME、MW_HOME、DOMAIN_HOME与内存参数;检查config.xml语法与一致性。
- 资源不足:CPU、内存、磁盘IO紧张会导致“启动卡住不动”或反复重启。
- 处理:用top/free -h/iostat观察资源,释放占用或调整JVM堆与GC策略后再启。
- 网络与防火墙:管理端口、节点间通信端口被防火墙/安全组阻断,表现为无法访问控制台或集群通信异常。
- 处理:放通相应端口(如7001/7002及集群多播/单播端口),或在内网环境临时关闭防火墙验证。
- 控制台首次登录极慢:JVM默认使用**/dev/random**熵源,在部分Ubuntu/虚拟化环境中熵不足会显著拖慢启动。
- 处理:在启动参数中加入**-Djava.security.egd=file:/dev/./urandom**(注意是“/dev/./urandom”这种写法),或调整**$JAVA_HOME/jre/lib/security/java.security中的securerandom.source**。
以上为Linux/Ubuntu上高频根因与处置要点,可覆盖大多数启动失败与卡住场景。
三 运行期问题的定位方法
- 线程与阻塞:用jstack 抓取线程转储,分析BLOCKED/WAITING线程与锁竞争;结合业务日志定位热点代码或死锁。
- 内存与泄漏:用jmap -heap 查看堆使用,配合jmap -histo或VisualVM/MAT分析对象分布与泄漏根因;必要时开启JVM的HeapDumpOnOutOfMemoryError并分析dump文件。
- 数据库连接与连接池:检查JDBC数据源的URL、驱动、账号权限、连接池大小与超时;在数据库侧排查慢SQL、锁等待与会话数上限。
- HTTP访问异常:通过access.log快速定位4xx/5xx分布与异常URL,结合server.log与应用日志分析后端异常栈。
- GC与停顿:开启JVM的GC日志(-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:),分析停顿时间与回收效果,按需调整堆与GC策略。
以上方法覆盖线程、内存、数据库、HTTP与GC五大维度,适合运行期性能与稳定性问题的定位。
四 Ubuntu与Linux的实用加固与优化
- 熵源优化:对控制台启动慢或首次部署慢的环境,优先设置**-Djava.security.egd=file:/dev/./urandom**,避免熵不足导致阻塞。
- 资源与稳定性:
- 适度设置JVM堆(如**-Xms/-Xmx**)并预留系统内存;避免将堆设置超过物理内存导致换页。
- 使用nice/ionice/cgroups限制WebLogic对CPU与IO的争用,保障关键业务稳定。
- 日志轮转与归档:配置logrotate管理server.log/access.log大小与保留周期,防止磁盘被撑满;必要时接入Logstash/Graylog做集中化分析与告警。
- 安全加固:仅开放必要端口(如7001/7002与集群通信端口),禁用不必要的协议与示例应用;为管理控制台与数据源设置强口令与访问控制。
以上做法可提升启动与运行稳定性,并便于长期运维与审计。