WebLogic在Debian上的日志分析与优化策略
一 日志来源与快速定位
- 常见日志与路径(默认结构,实际以域目录为准):
- 服务器日志:$DOMAIN_HOME/servers//logs/server.log(启动、运行、错误与警告)
- 访问日志:$DOMAIN_HOME/servers//logs/access.log(HTTP请求明细)
- 域日志:$DOMAIN_HOME/servers//logs/domain.log(域级事件,如部署、配置变更)
- 诊断日志:$DOMAIN_HOME/servers//logs/diagnostic.log(线程堆栈、内存等诊断信息)
- 快速查看与过滤:
- 实时跟踪:tail -f $DOMAIN_HOME/servers/AdminServer/logs/server.log
- 关键字定位:grep -n “ERROR|Exception” server.log -A5 -B5
- 按时间窗口:sed -n ‘/2025-12-28 10:00:/,/2025-12-28 11:00:/p’ server.log
- 系统侧日志:journalctl -u weblogic -f、tail -f /var/log/syslog
- 若通过 systemd 托管,可用 journalctl 统一查看服务日志,便于与 WebLogic 日志关联分析。
二 日志分析与可视化
- 命令行高效分析范式:
- 错误趋势统计:按天统计 ERROR 数量
- awk ‘/ERROR/ && /2025-12-28/’ server.log | wc -l
- 访问日志洞察:统计 5xx 响应数
- awk ‘$9 ~ /^5[0-9]{2}$/ {count++} END {print “5xx:”, count}’ access.log
- Top N 错误类型:提取异常堆栈首行并计数
- grep -o ‘java.[A-Za-z0-9_.]+Exception’ server.log | sort | uniq -c | sort -nr | head
- 可视化与集中化:
- ELK Stack(Elasticsearch + Logstash + Kibana):Filebeat/Logstash 采集与 Grok 解析,Kibana 构建错误趋势、级别分布、访问趋势等面板并设置告警。
- GoAccess:快速分析 access.log,生成 HTML 报告(请求数、响应时间、IP 分布等)
- 安装:sudo apt install goaccess
- 生成报告:goaccess /path/to/access.log -o /var/www/html/report.html --log-format=COMBINED
- 分析要点:优先关注 OutOfMemoryError、StuckThread、JDBC/连接池、频繁 ERROR/WARN 堆栈与 5xx 激增,结合时间窗口定位触发链路。
三 日志轮转与保留策略
- WebLogic 内置轮转(控制台或 MBean):
- Rotation Type:SIZE / TIME
- 关键参数:FileMinSize(默认 500 KB,上限约 2,097,150 KB)、TimeSpan(如 1 hour / 24 hours)
- 文件命名:支持时间占位符(如 myserver_%yyyy%%MM%%dd%%hh%%mm%.log)
- 访问日志:在 HTTP 属性页设置路径与格式,常见按 24 小时 切分
- 域日志:默认转发 WARNING 及以上,可通过域日志过滤器调整级别与内容
- 系统级 logrotate(/etc/logrotate.d/weblogic):
- 安全清理运行中大日志:避免直接删除正在写入的文件,采用“复制后清空”方式(配合 logrotate 的 postrotate 重载)。
四 性能与稳定性优化
- JVM 与 GC:
- 将最小堆与最大堆设为相同,减少堆动态扩展带来的停顿:-Xms 与 -Xmx(如 -Xms4g -Xmx4g)
- 结合负载选择 GC 策略(如 G1GC),并开启/分析 GC 日志以控制停顿时间
- 线程与工作负载:
- 使用 Work Managers 管理线程与 SLA,替代已废弃的 Execute Queues
- 调整 Stuck Thread 检测阈值与检查频率,识别长时阻塞请求并优化应用路径
- 网络 I/O:
- 启用 Native I/O(Performance Packs),按并发与协议(T3/IIOP)优化 Muxers/Socket Readers/Network Channels 与消息块参数
- 数据源与连接池:
- 合理设置 Initial/Max Capacity、Timeout、Test Connections,启用失效连接回收,避免连接泄漏放大线程阻塞
- 运行模式:
- 生产环境使用 Production Mode(禁用自动部署、使用正式证书、更严格的默认安全与性能参数)。
五 排错与风险控制清单
- 快速定位流程:
- 系统侧:journalctl -u weblogic -b、tail -f /var/log/syslog、dmesg
- 进程与资源:ps aux | grep weblogic、top/htop
- 端口连通:对管理端口(默认 7001)执行 nc -zv 7001
- WebLogic 日志:tail -f server.log 与 grep -n “ERROR” server.log -A5 -B5
- 常见故障与处理要点:
- 端口被占用:netstat -anp | grep <端口> 定位进程并调整 config.xml 端口后重启
- 文件锁导致无法启动:清理 edit.lok、config.lok、AdminServer.lok、EmbeddedLDAP.lok 及 servers/AdminServer/data/store/*.DAT 后启动
- 启动缓慢/反复输入凭据:在 $DOMAIN_HOME/servers/AdminServer/security/boot.properties 写入 username/password 实现自动引导
- 内存不足或 GC 问题:在 startWebLogic.sh/setDomainEnv.sh 设置 JAVA_OPTIONS=“-Xms… -Xmx…”
- 权限错误:确保运行用户对 $DOMAIN_HOME 具备读写/执行权限
- JDBC 连接失败:核对 IP/端口/库名/账号/密码/驱动版本 与防火墙策略
- 类加载冲突:在 WEB-INF/weblogic.xml 配置优先加载应用包,规避 NoSuchMethodError/NoClassDefFoundError
- 变更与风险控制:
- 调整日志级别、路径或轮转策略在维护窗口进行,保留回滚方案
- 权限与属主:确保 weblogic:weblogic 对日志目录与轮转后文件具备正确权限(如 640)
- 容量预警:定期检查日志大小,超过阈值(如 1 GB)发出告警并归档清理。