Files
2026-10-20 21:19:44 +08:00

3.8 KiB
Raw Permalink Blame History

11.10 故障排查手册

:::tip 概述 按故障类别速查:启动失败 / 认证授权 / 数据异常 / 性能 / 缓存 / 定时任务 / 文件上传。每类给出症状→定位→处理。 :::

启动类

症状 定位 处理
启动即退出 端口占用 / 配置缺失 / 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

排障通用路径

1. /api/health          服务活着吗
2. /api/cache/info      缓存模式与健康
3. /api/server/info     全景体检(DB/磁盘/调度器)
4. 启动日志             告警项逐一确认
5. /api.json            接口与文档一致性
6. 操作/登录日志        异常行为追溯