提交 0fa62058 authored 作者: 陈泽健's avatar 陈泽健

docs(log): 更新日志监测文档和分析报告

- 创建中间件服务运行问题PRD文档
- 更新系统功能运行问题文档中的部署路径信息
- 添加服务列表表格详细记录各服务部署路径和日志文件
- 扩展Claude设置中日志监测相关命令配置
- 创建5.44服务日志监测分析报告详细记录ClassCastException问题
- 创建中间件服务运行监测方案执行文档
- 生成多服务日志监测分析报告涵盖8个服务的健康状况
- 创建服务日志分析结果文档记录系统运行状态和关键问题
- 记录Redis连接超时、数据库连接失败等核心问题及修复建议
- 更新系统资源状态和磁盘使用情况监控信息
上级 d6d89335
...@@ -133,7 +133,18 @@ ...@@ -133,7 +133,18 @@
"Bash(mv check_deleted_file_ubains_header.tmp check_deleted_file_ubains.sh)", "Bash(mv check_deleted_file_ubains_header.tmp check_deleted_file_ubains.sh)",
"Bash(chmod +x check_deleted_file_ubains.sh)", "Bash(chmod +x check_deleted_file_ubains.sh)",
"Bash(bash -n \"E:\\\\ubains-module-test\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\预定系统\\\\一键更新\\\\update_cron_jobs.sh\")", "Bash(bash -n \"E:\\\\ubains-module-test\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\预定系统\\\\一键更新\\\\update_cron_jobs.sh\")",
"Bash(bash -n auto_deploy_services.sh)" "Bash(bash -n auto_deploy_services.sh)",
"Bash(dir /s /b)",
"Bash(findstr /i \"JwtAuthentication\")",
"Bash(sshpass *)",
"Bash(ping *)",
"Bash(dir \"AuxiliaryTool\\\\ScriptTool\\\\RemoteUpdate\\\\\" 2>nul)",
"Bash('\"$plink\\\\')",
"Bash('\"$cmd\\\\')",
"Bash(python3 log_monitor.py)",
"Bash(dir E:\\\\GithubData\\\\ubains-module-test\\\\Docs\\\\PRD\\\\日志监测 *)",
"Bash(dir E:\\\\GithubData\\\\ubains-module-test\\\\Docs\\\\PRD\\\\日志监测\\\\服务日志分析结果 *)",
"Bash(dir *)"
] ]
} }
} }
# 5.44服务日志监测分析报告
## 📋 报告信息
| 项目 | 内容 |
|------|------|
| **报告日期** | 2026-04-23 |
| **分析时间** | 14:20-14:30 |
| **服务器** | 192.168.5.44:22 |
| **容器** | ujava2 (运行45小时) |
| **日志文件** | /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log |
| **日志大小** | 9.4M |
---
## 一、服务器运行状态
### 1.1 容器状态
```
容器ID: 7088f5a00b40
镜像: 139.9.60.86:5000/ujava:v6
运行时长: 6 days ago Up 45 hours
端口映射: 0.0.0.0:8999->8999/tcp (主服务端口)
```
### 1.2 Java进程配置
```
JVM参数: -Xms1048m -Xmx1048m
注意: 与PRD文档记录的4096m不符
```
### 1.3 实际部署路径(已修正)
| 项目 | PRD记录 | 实际路径 |
|------|---------|---------|
| 容器内部署路径 | `/var/www/java/api-java-meeting2.0` | `/var/www/java/api/java-meeting/java-meeting2.0/` |
| JAR文件 | - | `ubains-meeting-inner-api-1.0-SNAPSHOT.jar` |
| 日志路径 | - | `logs/ubains-INFO-AND-ERROR.log` |
---
## 二、日志分析结果
### 2.1 采样统计(最近500行)
| 指标 | 数量 | 百分比 |
|------|------|--------|
| 总行数 | 500 | 100% |
| ERROR | 27 | 5.4% |
| WARN | 0 | 0% |
| INFO | 473 | 94.6% |
### 2.2 全文件错误统计
| 异常类型 | 出现次数 | 严重程度 |
|---------|---------|---------|
| **ClassCastException** | **115** | 🔴 高 |
| TooManyResultsException | 0 | - |
| NullPointerException | 0 | - |
| Timeout | 0 | - |
---
## 三、核心问题分析
### 🔴 问题:ClassCastException 频繁发生
#### 3.1 错误详情
```
java.lang.ClassCastException: com.ubains.meeting.dto.TokenDetails cannot be cast to com.ubains.meeting.dto.ManageUserDetails
```
#### 3.2 触发位置
```
文件: com.ubains.filter.JwtAuthenticationTokenFilter.java
行号: 221
方法: doFilterInternal()
```
#### 3.3 触发特征
| 特征 | 值 |
|------|-----|
| 触发频率 | 每10秒一次 |
| 来源IP | 192.168.9.204 |
| 来源账号 | ANA-29K-0066 |
| 请求类型 | JWT认证请求 |
#### 3.4 完整堆栈
```
at com.ubains.filter.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:221)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
at com.ubains.filter.CacheHttpServletRequestFilter.doFilter(CacheHttpServletRequestFilter.java:42)
...
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
```
#### 3.5 问题分析
**根本原因:**
- JWT token 中存储的是 `TokenDetails` 类型对象
- 代码在 `JwtAuthenticationTokenFilter.java:221` 尝试将其强制转换为 `ManageUserDetails` 类型
- 这两个类型不兼容,导致 ClassCastException
**影响范围:**
1. 来自 IP:192.168.9.204 (账号:ANA-29K-0066) 的所有认证请求失败
2. 产生大量错误日志(累计115次)
3. 可能导致该设备端无法正常访问系统功能
**业务影响:**
- 设备端认证失败可能导致会议控制功能异常
- 频繁的错误日志占用磁盘空间
- 错误堆栈打印消耗CPU资源
---
## 四、修复建议
### 4.1 紧急修复(P0)
#### 建议1:修复JwtAuthenticationTokenFilter类型转换错误
**文件位置:** `JwtAuthenticationTokenFilter.java:221`
**问题代码:**
```java
ManageUserDetails userDetails = (ManageUserDetails) authentication.getDetails();
```
**修复方案A:使用instanceof检查**
```java
Object details = authentication.getDetails();
if (details instanceof ManageUserDetails) {
ManageUserDetails userDetails = (ManageUserDetails) details;
// 处理逻辑
} else if (details instanceof TokenDetails) {
TokenDetails tokenDetails = (TokenDetails) details;
// 转换或分别处理
} else {
logger.error("Unsupported authentication details type: " + details.getClass());
}
```
**修复方案B:统一使用TokenDetails**
```java
TokenDetails tokenDetails = (TokenDetails) authentication.getDetails();
// 从TokenDetails获取需要的信息
```
#### 建议2:检查JWT Token生成逻辑
确保Token生成和解析使用相同的类型。
### 4.2 中期优化(P1)
1. **添加设备端白名单或特殊处理**
- 对 IP:192.168.9.204 的设备端请求进行特殊认证处理
- 或联系设备端确认认证方式是否匹配
2. **增加异常日志限流**
- 避免同一错误重复打印大量堆栈
- 可使用日志去重或降级策略
### 4.3 长期优化(P2)
1. **统一认证类型体系**
- Review `TokenDetails``ManageUserDetails` 的设计
- 考虑是否需要统一为一个类型
2. **增加单元测试**
- 添加 JWT 认证相关的单元测试
- 覆盖不同类型用户认证场景
---
## 五、与PRD文档对比
### 5.1 已变化项
| 项目 | PRD记录 | 实际值 | 状态 |
|------|---------|--------|------|
| JVM-Xmx | 4096m | 1048m | ⚠️ 不一致 |
| 部署路径 | api-java-meeting2.0 | api/java-meeting/java-meeting2.0/ | ⚠️ 不一致 |
| 主要错误 | TooManyResultsException | ClassCastException | 🔄 变化 |
### 5.2 PRD中提及的问题当前状态
| 问题 | PRD描述 | 当前状态 |
|------|---------|---------|
| TooManyResultsException | 11MB错误日志 | ✅ 未再出现 |
| 定时任务线程池不足 | 10线程 vs 59任务 | ⏳ 待验证 |
| Thread.sleep 4秒 | 每任务浪费4秒 | ⏳ 待验证 |
---
## 六、后续行动计划
| 序号 | 行动项 | 优先级 | 负责人 | 截止日期 | 状态 |
|------|--------|--------|--------|----------|------|
| 1 | 修复JwtAuthenticationTokenFilter类型转换错误 | P0 | | | [ ] |
| 2 | 联系IP:192.168.9.204设备端确认认证方式 | P1 | | | [ ] |
| 3 | 更新PRD文档中的部署路径和JVM参数 | P1 | | | [ ] |
| 4 | 验证PRD中其他优化项是否已生效 | P2 | | | [ ] |
| 5 | 添加JWT认证单元测试 | P2 | | | [ ] |
---
## 七、附录
### 7.1 错误日志样本
```
2026-04-23 14:01:50.809 [http-nio-8999-exec-9] ERROR o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
java.lang.ClassCastException: com.ubains.meeting.dto.TokenDetails cannot be cast to com.ubains.meeting.dto.ManageUserDetails
at com.ubains.filter.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:221)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
```
### 7.2 监测命令
```bash
# SSH连接信息
Host: 192.168.5.44
Port: 22
Username: root
Password: Ubains@123
# 实时查看日志
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
# 查看最近的ClassCastException
docker exec ujava2 grep -A 20 "ClassCastException" /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
# 统计错误类型
docker exec ujava2 grep -oE "[A-Z][a-zA-Z]+Exception" /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log | sort | uniq -c | sort -rn
```
---
**报告生成时间:** 2026-04-23 14:30
**报告生成工具:** Claude Code SSH日志监测
**下次监测建议:** 修复后24小时复查
## 📋 背景
- 预定系统,支持预约会议、签到、联动无纸化等功能
**服务器IP**:192.168.5.44 root 密码 Ubains@123
**部署容器** docker环境:uredis、umysql、uemqx、unacos
## 🎯 任务
### 问题1: 监查查询项目运行是否存在报错信息或是异常信息
- 查找代码的优化项,找出优化或配置问题
- 登录服务器,监测相关的运行情况结合代码进行优化
### 报告:
- 分析日志:`Docs/PRD/日志监测/中间件日志分析`
### 代码规范
- 严格按照代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 严格按照问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 严格按照方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 严格按照文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 严格按照测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
### 问题记录与规避
- 执行时,按照Docs/PRD/日志监测/_PRD_方法总结_记录文档.md,累计的记录所积累的经验,规避已经出现过的问题
- 执行时,按照Docs/PRD/日志监测/_PRD_方法总结_记录文档.md,累计的记录所积累的经验,规避已经出现过的问题
\ No newline at end of file
# 中间件服务运行监测方案执行 — MySQL与Redis
## 📋 背景
**服务器IP**:192.168.5.44 root 密码 Ubains@123
**中间件容器**:umysql、uredis、uemqx、unacos
**监测时间**:2026-04-23
---
## 一、服务列表与连接信息
| 中间件 | 容器名 | 端口 | 连接地址 | 用途 |
|-------|-------|------|---------|------|
| MySQL | umysql | 8306 | 192.168.5.44:8306 | 数据库服务 |
| Redis | uredis | 6379 | 192.168.5.4:6379 | 缓存服务 |
| EMQX | uemqx | 1883/8083 | - | MQTT消息服务 |
| Nacos | unacos | 8848 | - | 服务注册中心 |
---
## 二、监测执行记录
### 监测时间:2026-04-23 14:40
---
## 三、问题发现与修复记录
| 序号 | 发现时间 | 问题描述 | 处理措施 | 状态 |
|------|---------|---------|---------|------|
| 1 | | | | [ ] |
---
## 四、优化方案执行
### 优化1:
**状态:** [ ] 待实现 / [x] 已实现
---
## 五、监测报告输出
**分析报告位置:** `Docs/PRD/日志监测/中间件日志分析/`
---
## 📝 附录
### 代码规范
- 严格按照代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 严格按照问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 严格按照方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 严格按照文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 严格按照测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
### 问题记录与规避
- 执行时,按照 `Docs/PRD/日志监测/_PRD_方法总结_记录文档.md`,累计记录所积累的经验,规避已经出现过的问题
## 📋 背景 ## 📋 背景
- 预定系统,支持预约会议、签到、联动无纸化等功能 - 预定系统,支持预约会议、签到、联动无纸化等功能
**服务器IP**:192.168.5.44 root 密码 Ubains@123 **服务器IP**:192.168.5.44 root 密码 Ubains@123
**容器内部署路径**:/var/www/java/api/api-java-meeting2.0 **容器内主服务部署路径**:/var/www/java/api/api-java-meeting2.0
**宿主机部署路径**, /data/services/api/java-meeting/java-meeting2.0 **宿主机主服务部署路径**, /data/services/api/java-meeting/java-meeting2.0
**容器内对外服务部署路径**:/var/www/java/api/api-java-meeting-extapi
**宿主机对外服务部署路径**, /data/services/api/java-meeting/java-meeting-extapi
**容器内鉴权服务部署路径**:/var/www/java/api/auth/auth-sso-auth、/var/www/java/api/auth/auth-sso-gatway、/var/www/java/api/auth/auth-sso-system
**宿主机对外服务部署路径**, /data/services/api/auth/auth-sso-auth、/data/services/api/auth/auth-sso-gatway、/data/services/api/auth/auth-sso-system
**部署容器** docker环境:ujava2 **部署容器** docker环境:ujava2
## 🎯 任务 ## 🎯 任务
...@@ -10,6 +14,8 @@ ...@@ -10,6 +14,8 @@
- 查找代码的优化项,找出优化或配置问题 - 查找代码的优化项,找出优化或配置问题
- 登录服务器,监测相关的运行情况结合代码进行优化 - 登录服务器,监测相关的运行情况结合代码进行优化
### 分析结果:
- `Docs/PRD/日志监测/服务日志分析结果`
### 代码规范 ### 代码规范
- 严格按照代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md` - 严格按照代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
......
...@@ -3,10 +3,18 @@ ...@@ -3,10 +3,18 @@
## 📋 背景 ## 📋 背景
- 预定系统,支持预约会议、签到、联动无纸化等功能 - 预定系统,支持预约会议、签到、联动无纸化等功能
**服务器IP**:192.168.5.44 root 密码 Ubains@123 **服务器IP**:192.168.5.44 root 密码 Ubains@123
**容器内部署路径**:/var/www/java/api/api-java-meeting2.0
**宿主机部署路径**:/data/services/api/java-meeting/java-meeting2.0
**部署容器**:docker环境:ujava2 **部署容器**:docker环境:ujava2
### 服务列表
| 服务名称 | 容器内部署路径 | 宿主机部署路径 | 日志文件 |
|---------|---------------|---------------|---------|
| **主服务** | `/var/www/java/api/java-meeting/java-meeting2.0` | `/data/services/api/java-meeting/java-meeting2.0` | `logs/ubains-INFO-AND-ERROR.log` |
| **对外服务** | `/var/www/java/api/java-meeting/java-meeting-extapi` | `/data/services/api/java-meeting/java-meeting-extapi` | `logs/ubains-INFO-AND-ERROR.log` |
| **鉴权服务-认证** | `/var/www/java/api/auth/auth-sso-auth` | `/data/services/api/auth/auth-sso-auth` | `logs/ubains-INFO-AND-ERROR.log` |
| **鉴权服务-网关** | `/var/www/java/api/auth/auth-sso-gatway` | `/data/services/api/auth/auth-sso-gatway` | `logs/ubains-INFO-AND-ERROR.log` |
| **鉴权服务-系统** | `/var/www/java/api/auth/auth-sso-system` | `/data/services/api/auth/auth-sso-system` | `logs/ubains-INFO-AND-ERROR.log` |
## 🎯 任务 ## 🎯 任务
### 问题:监查查询项目运行为什么有时出现进程消失的问题,有时间进程存在但不运行 ### 问题:监查查询项目运行为什么有时出现进程消失的问题,有时间进程存在但不运行
- 查找代码的优化项,找出优化或配置问题 - 查找代码的优化项,找出优化或配置问题
......
# 多服务日志监测分析报告
## 📋 报告信息
| 项目 | 内容 |
|------|------|
| **报告日期** | 2026-04-23 |
| **分析时间** | 14:35 |
| **服务器** | 192.168.5.44:22 |
| **容器** | ujava2 |
| **监测服务数** | 8个 |
---
## 一、服务列表与日志路径
| 序号 | 服务名称 | 日志路径 | 状态 |
|------|---------|---------|------|
| 1 | 主服务 (java-meeting2.0) | `/var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log` | ✅ |
| 2 | 对外服务 (java-meeting-extapi) | `/var/www/java/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log` | ✅ |
| 3 | 定时任务 (java-quartz) | `/var/www/java/api/java-meeting/java-quartz/logs/ubains-INFO-AND-ERROR.log` | ✅ |
| 4 | MQTT服务 (java-mqtt) | `/var/www/java/api/java-meeting/java-mqtt/logs/ubains-INFO-AND-ERROR.log` | ✅ |
| 5 | 消息调度 (java-message-scheduling) | `/var/www/java/api/java-meeting/java-message-scheduling/logs/ubains-INFO-AND-ERROR.log` | ✅ |
| 6 | 鉴权认证 (auth-sso-auth) | `/var/www/java/api/auth/auth-sso-auth/logs/auth-sso-auth/log.out` | ✅ |
| 7 | 鉴权网关 (auth-sso-gatway) | `/var/www/java/api/auth/auth-sso-gatway/logs/auth-sso-gateway/log.out` | ✅ |
| 8 | 鉴权系统 (auth-sso-system) | `/var/www/java/api/auth/auth-sso-system/logs/auth-sso-system/log.out` | ✅ |
---
## 二、总体健康状况
| 状态等级 | 服务数 | 服务名称 |
|---------|-------|---------|
| 🟢 OK | 4个 | MQTT服务、消息调度、鉴权认证、鉴权网关、鉴权系统 |
| 🟡 WARN | 1个 | 对外服务 |
| 🔴 CRITICAL | 2个 | 主服务、定时任务 |
---
## 三、各服务详细分析
### 🔴 服务1:主服务 (java-meeting2.0) - CRITICAL
| 指标 | 值 |
|------|-----|
| 日志大小 | 13M |
| 采样行数 | 500行 |
| ERROR数 | 79 (15.8%) |
| WARN数 | 4 |
#### 错误类型分布
| 错误类型 | 数量 | 占比 |
|---------|-----|------|
| **ClassCastException** | 39 | 49% |
| Other | 40 | 51% |
#### 核心问题
```
java.lang.ClassCastException: com.ubains.meeting.dto.TokenDetails
cannot be cast to com.ubains.meeting.dto.ManageUserDetails
位置: JwtAuthenticationTokenFilter.java:221
频率: 每10秒一次
来源: IP:192.168.9.204, 账号:ANA-29K-0066
```
#### 修复建议
1. 修改 `JwtAuthenticationTokenFilter.java:221` 类型转换逻辑
2. 使用 `instanceof` 检查后再转换
---
### 🟡 服务2:对外服务 (java-meeting-extapi) - WARN
| 指标 | 值 |
|------|-----|
| 日志大小 | 2.7M |
| 采样行数 | 500行 |
| ERROR数 | 47 (9.4%) |
| WARN数 | 1 |
#### 错误类型分布
| 错误类型 | 数量 | 占比 |
|---------|-----|------|
| Other | 28 | 60% |
| **Connection** | 19 | 40% |
#### 核心问题
```
redis.clients.jedis.exceptions.JedisConnectionException:
Could not get a resource from the pool
Caused by: Failed connecting to 192.168.5.4
```
#### 分析
- Redis连接池获取资源失败
- 目标Redis地址: 192.168.5.4
- 可能原因: Redis服务未启动或网络不通
---
### 🔴 服务3:定时任务 (java-quartz) - CRITICAL
| 指标 | 值 |
|------|-----|
| 日志大小 | 34M |
| 采样行数 | 487行 |
| ERROR数 | 162 (33.3%) |
| WARN数 | 1 |
#### 错误类型分布
| 错误类型 | 数量 | 占比 |
|---------|-----|------|
| **SQLException** | 72 | 44% |
| Other | 65 | 40% |
| **Connection** | 25 | 15% |
#### 核心问题
```
java.sql.SQLNonTransientConnectionException:
Could not create connection to database server.
Attempted reconnect 3 times. Giving up.
数据库地址: jdbc:mysql://192.168.5.44:8306/ubains
错误原因: Connection refused (连接被拒绝)
```
#### 分析
- 定时任务无法连接到数据库
- 数据库地址: 192.168.5.44:8306
- 端口8306连接被拒绝
- 影响: 所有依赖数据库的定时任务失败
#### 修复建议
1. 检查MySQL服务是否在端口8306上运行
2. 验证数据库配置是否正确
3. 检查防火墙是否开放8306端口
---
### 🟢 服务4:MQTT服务 (java-mqtt) - OK
| 指标 | 值 |
|------|-----|
| 日志大小 | 275K |
| 采样行数 | 492行 |
| ERROR数 | 14 (2.8%) |
| WARN数 | 206 |
#### 状态
- 错误率较低,处于健康状态
- 有较多警告信息,但不影响核心功能
---
### 🟢 服务5:消息调度 (java-message-scheduling) - OK
| 指标 | 值 |
|------|-----|
| 日志大小 | 45K |
| 采样行数 | 255行 |
| ERROR数 | 3 (1.2%) |
| WARN数 | 176 |
#### 状态
- 错误率最低,运行健康
- 警告数量较多但不影响功能
---
### 🟢 服务6-8:鉴权服务 (auth-sso) - OK
| 服务 | 日志大小 | ERROR | WARN |
|------|---------|-------|------|
| 鉴权认证 | 未知 | 0 | 0 |
| 鉴权网关 | 未知 | 0 | 0 |
| 鉴权系统 | 未知 | 0 | 0 |
#### 状态
- 所有鉴权服务运行正常
- 无错误和警告日志
- 日志文件较小或刚启动
---
## 四、关键问题汇总
### 🔴 问题1:主服务 ClassCastException
- **严重程度**: 高
- **影响范围**: 设备端认证失败
- **修复优先级**: P0
### 🔴 问题2:定时任务数据库连接失败
- **严重程度**: 高
- **影响范围**: 所有数据库相关定时任务
- **修复优先级**: P0
- **可能原因**: MySQL服务未在8306端口启动
### 🟡 问题3:对外服务Redis连接失败
- **严重程度**: 中
- **影响范围**: Redis相关功能
- **修复优先级**: P1
- **可能原因**: Redis服务未启动或网络不通
---
## 五、修复行动计划
| 序号 | 问题 | 服务 | 优先级 | 建议措施 | 状态 |
|------|------|------|--------|---------|------|
| 1 | ClassCastException | 主服务 | P0 | 修复JwtAuthenticationTokenFilter类型转换 | [ ] |
| 2 | 数据库连接失败 | 定时任务 | P0 | 检查MySQL服务8306端口状态 | [ ] |
| 3 | Redis连接失败 | 对外服务 | P1 | 检查Redis服务192.168.5.4状态 | [ ] |
---
## 六、服务器状态检查命令
```bash
# SSH连接信息
Host: 192.168.5.44
Port: 22
Username: root
Password: Ubains@123
# 检查MySQL服务8306端口
docker exec ujava2 netstat -tlnp | grep 8306
# 检查MySQL服务状态
docker exec ujava2 ps aux | grep mysql
# 检查Redis连接
docker exec ujava2 telnet 192.168.5.4 6379
# 实时监控各服务日志
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-quartz/logs/ubains-INFO-AND-ERROR.log
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log
```
---
**报告生成时间:** 2026-04-23 14:35
**下次复查建议:** 修复完成后24小时
# 多服务日志监测分析报告
## 📋 报告信息
| 项目 | 内容 |
|------|------|
| **报告日期** | 2026-05-06 |
| **分析时间** | 10:45 |
| **服务器** | 192.168.5.44:22 |
| **容器** | ujava2 |
| **监测服务数** | 5个 |
| **系统运行时长** | 19天 |
---
## 一、服务列表与日志路径
| 序号 | 服务名称 | 日志路径 | 状态 |
|------|---------|---------|------|
| 1 | 主服务 (java-meeting2.0) | `/var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log` | 🟡 WARN |
| 2 | 对外服务 (java-meeting-extapi) | `/var/www/java/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log` | 🟢 OK |
| 3 | 鉴权认证 (auth-sso-auth) | `/var/www/java/api/auth/auth-sso-auth/logs/auth-sso-auth/log.out` | 🟢 OK |
| 4 | 鉴权网关 (auth-sso-gatway) | `/var/www/java/api/auth/auth-sso-gatway/logs/auth-sso-gateway/log.out` | 🟢 OK |
| 5 | 鉴权系统 (auth-sso-system) | `/var/www/java/api/auth/auth-sso-system/logs/auth-sso-system/log.out` | 🟢 OK |
---
## 二、总体健康状况
| 状态等级 | 服务数 | 服务名称 |
|---------|-------|---------|
| 🟢 OK | 4个 | 对外服务、鉴权认证、鉴权网关、鉴权系统 |
| 🟡 WARN | 1个 | 主服务 |
| 🔴 CRITICAL | 0个 | - |
---
## 三、各服务详细分析
### 🟡 服务1:主服务 (java-meeting2.0) - WARN
| 指标 | 值 |
|------|-----|
| ERROR数 | 14 |
| WARN数 | 101 |
| 错误率 | 低 |
#### 错误类型分布
| 错误类型 | 数量 | 占比 |
|---------|-----|------|
| **LettuceException** | 8 | 57% |
| **RedisCommandTimeoutException** | 4 | 29% |
| PassThroughException | 4 | 29% |
| LettuceAccessException | 4 | 29% |
| FallbackException | 4 | 29% |
| TimeoutException | 2 | 14% |
| QueryTimeoutException | 2 | 14% |
#### 核心问题
```
错误类型: Redis连接超时异常
触发频率: 约1次/小时
主要原因: Lettuce Redis客户端连接超时
错误示例:
- RedisUtil_func Redis高性能功能函数
- lzzsh.switch 联众_switch业务处理
```
#### 修复建议
1. **检查Redis服务状态** - 确认Redis服务是否正常运行
2. **增加Redis连接超时配置** - 调整Lettuce客户端超时参数
3. **增加Redis连接池大小** - 应对高并发场景
---
### 🟢 服务2:对外服务 (java-meeting-extapi) - OK
| 指标 | 值 |
|------|-----|
| ERROR数 | 1 |
| WARN数 | 0 |
| 错误率 | 极低 |
#### 错误分析
```
错误类型: MQTT连接丢失
触发时间: 2026-05-06 09:47:41
错误信息: Lost connection: 已断开连接; retrying...
```
#### 状态评估
- MQTT连接自动重连机制正常
- 不影响主要业务功能
- 建议监控MQTT Broker状态
---
### 🟢 服务3-5:鉴权服务 (auth-sso) - OK
| 服务 | ERROR | WARN | 状态 |
|------|-------|------|------|
| 鉴权认证 (auth-sso-auth) | 0 | 0 | ✅ 正常 |
| 鉴权网关 (auth-sso-gatway) | 0 | 0 | ✅ 正常 |
| 鉴权系统 (auth-sso-system) | 0 | 0 | ✅ 正常 |
#### 状态评估
- 所有鉴权服务运行正常
- 无错误和警告日志
- 日志文件较小或刚重启
---
## 四、系统资源状态
### 4.1 Docker容器状态
```
CONTAINER ID: 7088f5a00b40
NAME: ujava2
CPU使用率: 3.22%
内存使用: 3.881GiB / 15.12GiB (25.67%)
网络I/O: 16.6GB / 8.72GB
磁盘I/O: 5.26GB / 3.84MB
进程数: 686
```
### 4.2 Java进程状态
```
PID 1 - /bin/bash /var/www/java/api/start.sh
PID 210 - auth-sso-system (Xms256m, Xmx512m)
PID 1628 - dubbo-welink (Xms1024m, Xmx1024m)
PID 806434 - auth-sso-auth (Xms256m, Xmx512m)
PID 806644 - auth-sso-gatway (Xms256m, Xmx512m)
```
### 4.3 数据库连接状态
```
MySQL连接数: 0
Redis连接数: 0
```
⚠️ **注意**: 连接数显示为0可能是因为:
1. 使用了docker exec查询,无法看到容器内实际连接
2. 查询命令权限不足
3. 连接使用完毕立即释放
### 4.4 系统负载
```
当前时间: 10:45:30
运行时长: 19天 2小时 3分钟
负载: 0.19 (1分钟), 0.26 (5分钟), 0.38 (15分钟)
```
✅ 负载正常
### 4.5 磁盘使用情况
```
/dev/mapper/openeuler-data 75G 66G 4.8G 94% /data
```
🔴 **警告**: 磁盘使用率达94%,剩余空间仅4.8GB,需要立即清理!
---
## 五、关键问题汇总
### 🔴 问题1:磁盘空间严重不足
- **严重程度**: 高
- **影响范围**: 所有服务
- **当前状态**: 94%使用率,剩余4.8GB
- **修复优先级**: P0
- **建议措施**:
1. 清理旧的日志文件
2. 清理Docker镜像和容器缓存
3. 清理临时文件
### 🟡 问题2:主服务Redis连接超时
- **严重程度**: 中
- **影响范围**: 主服务Redis相关功能
- **当前状态**: 间歇性超时
- **修复优先级**: P1
- **建议措施**:
1. 检查Redis服务状态
2. 调整Redis连接超时配置
3. 增加连接池大小
### 🟢 问题3:对外服务MQTT连接断开
- **严重程度**: 低
- **影响范围**: MQTT消息接收
- **当前状态**: 自动重连正常
- **修复优先级**: P2
- **建议措施**:
1. 监控MQTT Broker状态
2. 检查网络稳定性
---
## 六、与历史报告对比
### 6.1 问题变化情况
| 问题 | 4月23日报告 | 5月6日报告 | 状态变化 |
|------|-----------|-----------|---------|
| ClassCastException | 115次 | 0次 | ✅ 已修复 |
| TooManyResultsException | 0次 | 0次 | ✅ 已修复 |
| Redis连接超时 | 未报告 | 14次 | 🆕 新问题 |
| 数据库连接失败 | 连接被拒绝 | 待验证 | 🔄 状态待确认 |
### 6.2 优化效果评估
| 优化项 | 状态 | 说明 |
|--------|------|------|
| ClassCastException修复 | ✅ 完成 | 之前的类型转换错误已解决 |
| TooManyResultsException修复 | ✅ 完成 | WeLink同步异常已解决 |
| 定时任务数据库连接 | ⏳ 待验证 | 需要进一步检查 |
---
## 七、修复行动计划
| 序号 | 问题 | 服务 | 优先级 | 建议措施 | 负责人 | 截止日期 | 状态 |
|------|------|------|--------|---------|--------|----------|------|
| 1 | 磁盘空间不足 | 系统 | P0 | 清理日志和Docker缓存 | | | [ ] |
| 2 | Redis连接超时 | 主服务 | P1 | 检查Redis服务状态和配置 | | | [ ] |
| 3 | MQTT连接断开 | 对外服务 | P2 | 监控MQTT Broker | | | [ ] |
---
## 八、服务器检查命令参考
```bash
# SSH连接信息
Host: 192.168.5.44
Port: 22
Username: root
Password: Ubains@123
# 检查磁盘使用
docker exec ujava2 df -h
# 清理Docker缓存
docker system prune -a
# 检查Redis服务状态
docker exec ujava2 netstat -tlnp | grep 6379
# 实时监控各服务日志
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
docker exec ujava2 tail -f /var/www/java/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log
# 检查Java进程
docker exec ujava2 ps aux | grep java
# 检查系统负载
docker exec ujava2 uptime
```
---
## 九、监测结论
### 总体评估
-**鉴权服务**: 全部运行正常,无错误
- 🟡 **主服务**: 有Redis连接超时问题,需要关注
- 🟢 **对外服务**: 基本正常,MQTT连接自动恢复
- 🔴 **系统资源**: 磁盘空间严重不足,需要立即处理
### 建议
1. **立即执行**: 清理磁盘空间,避免服务因磁盘满而停止
2. **尽快处理**: 检查Redis服务状态,解决连接超时问题
3. **持续监控**: 定期检查各服务日志和系统资源使用情况
---
**报告生成时间:** 2026-05-06 10:45
**报告生成工具:** Claude Code SSH日志监测
**下次监测建议:** 磁盘清理完成后24小时复查
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论