11.10 故障排查手册
概述
按故障类别速查:启动失败 / 认证授权 / 数据异常 / 性能 / 缓存 / 定时任务 / 文件上传。每类给出症状→定位→处理。
启动类
| 症状 | 定位 | 处理 |
|---|---|---|
| 启动即退出 | 端口占用 / 配置缺失 / Go 版本 | netstat 查端口;从部署目录运行;核对 go 版本 |
| 数据库连接失败 | link 串/网络/账号 | telnet 端口;核对 database.default |
| Redis 告警降级 | 地址/密码/网络 | 修复后自动恢复(运行期探测);/api/cache/info 验证 |
| IdentityLoader 告警 | 依赖接线缺失 | 查 internal/cmd 空白导入与 logic init |
| panic 堆栈 | 看日志堆栈 | 定位代码 bug;errorStack=false 时看服务端日志 |
认证授权类
| 症状 | 定位 | 处理 |
|---|---|---|
| 全部 401 | jwt.secret 变更 / 时钟 | 改密钥后需重新登录;核对服务器时间 |
| 登录后单接口 401 | 令牌过期/黑名单 | 刷新令牌;查是否被强退拉黑 |
| 403 | 权限链四环 | gmeta permission ↔ 菜单节点 ↔ 角色勾选 ↔ 身份缓存(DEL identity 键) |
| 权限改了不生效 | 身份缓存 300s | SavePermission 应主动清;查清理链;等过期 |
| 租户 1005/1006 | 租户过期/禁用 | 改租户状态/过期;等 60s 或 DEL tenant:info |
数据类
| 症状 | 定位 | 处理 |
|---|---|---|
| 租户串数据 | tenantTables 漏登记 | 补登记 + 复查查询是否绕过 dao.Ctx |
| 已删除数据可见 | 绕过 dao.Ctx / 手写条件 | 修复为 dao.Ctx 唯一入口 |
| 唯一冲突 1062 裸报错 | 无预检(设计内兜底) | 补 UniqueFields(Group=索引范围) |
| 新字段不返回 | entity/Req/Res/ToData 四处 | 逐一核对(见 3.3 加字段工作流) |
| 字典文本不显示 | SerializeMaps/Text 字段 | spec 声明 + 结构体 {Field}Text |
性能类
| 症状 | 定位 | 处理 |
|---|---|---|
| 接口慢 | 慢查询 / N+1 | debug 开 SQL 日志;查 userExpandNames 类批查是否缺失 |
| 内存增长 | 泄漏 | /api/server/info heapObjects/goroutines 趋势 |
| 并发瓶颈 | 连接池 | DB 池/Redis 池参数核算 |
| 磁盘满 | 日志/上传/备份 | LogClean 是否运行;upload 清理;扩容 |
| 大表超时 | city 全表查询 | 改级联路径(parent_code 索引) |
缓存类
| 症状 | 定位 | 处理 |
|---|---|---|
| mode=memory | Redis 不可用 | 修复 Redis;多实例期间限流/锁退化单机 |
| 键值陈旧 | TTL/失效点 | 对照 4.8 键全集;DEL 指定键 |
| 多实例不一致 | Redis 未共享 | 确认 mode=redis |
| 命中率低 | TTL 过短 | /api/cache/info hitRate;调 TTL |
定时任务类
| 症状 | 定位 | 处理 |
|---|---|---|
| 任务不执行 | 未发布/cron 无效/未挂载 | status=1?daemonStatus?Scheduler.mounted vs expected |
| 重复执行 | 锁失效 | Redis 可用性(job:lock 依赖);execute_policy 核对 |
| 执行失败 | 看 job_log exception | HTTP 超时(30s)/handler panic/数据库错误 |
| 任务日志堆积 | LogClean 未跑 | 检查 LogClean 任务与 retentionDays |
文件上传类
| 症状 | 定位 | 处理 |
|---|---|---|
| 上传 413/拒绝 | maxSize/白名单/嗅探 | 对照 file.* 配置 |
| 图片 404 | domainUrl/转正失败 | 库中相对路径 vs GetFileUrl;查 temp 是否被清 |
| 富文本图片不显示 | 读取绕过基座 | 走 Detail/List(自动 Expand) |
| temp 堆积 | CleanTemp 未生效 | gcron 注册/tempExpireDays>0 |
排障通用路径
text
1. /api/health 服务活着吗
2. /api/cache/info 缓存模式与健康
3. /api/server/info 全景体检(DB/磁盘/调度器)
4. 启动日志 告警项逐一确认
5. /api.json 接口与文档一致性
6. 操作/登录日志 异常行为追溯