Files
easygoadmin-wiki/EasyGoAdmin_Gin_NaiveVue/zh/deploy/troubleshooting.md
T
2026-10-25 17:24:27 +08:00

70 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 11.10 故障排查手册
:::tip 概述
排查总纲:**先看启动日志与告警,再按层定位(网络 → 认证 → 业务 → 数据)**。trace_id 是单请求排障的金钥匙。
:::
## 启动类
| 现象 | 定位 |
|---|---|
| 启动即退出(配置校验失败) | 按提示修 config.yaml / APP_*;prod 模式检查四条红线(密钥/万能码/生成器) |
| Redis 降级告警 | Redis 不可用/密码错;内存降级是可用但语义退化的状态,尽快修复 |
| WireCheck 告警 | 某模块未接线(IdentityLoader/TenantLoader/LogSink);按裁剪意图判断是否预期 |
| 端口占用 | server.address 改端口或释放进程 |
| Oracle 构建缺失 | oracle 需 `-tags oracle` 构建,检查部署产物构建参数 |
## 请求类
| 现象 | 定位 |
|---|---|
| 全部 404 | 路由未注册(新模块忘 Bind?未重启?);反代路径错 |
| 401 | Token 过期/在黑名单(刚登出或被强退);客户端 Authorization 头缺失 |
| 403 | 角色未授权该权限码;菜单节点与 RouteSpec 拼写不一致 |
| 429 | 限流命中(authLimit 更严);确认是否遭刷或配额过小 |
| 500 | 看日志中的 panic 栈(response 中间件已恢复并记录) |
| 响应缺 CORS 头 | 部署是否绕过了应用直连(CORS 由应用中间件登记) |
## 数据类
| 现象 | 定位 |
|---|---|
| 查到已删数据 | 绕过了 Ctx(用了 Raw/裸 DB) |
| 跨租户可见 | 表未登记 hooks.tenantTables;或平台级身份判定 |
| 写入缺审计字段 | 全局钩子未生效(db.Init 是否正常) |
| 物理删除被拦 | 设计行为;特殊场景 WithPhysicalDelete 放行 |
| 事务内读到旧数据 | 未用回调入参 ctx |
## 文件类
| 现象 | 定位 |
|---|---|
| 上传成功 404 | temp 未随表单保存转正;或 domainUrl/nginx root 不同构 |
| 图片裂图 | http/https 混合内容;IMG_URL 还原依赖 domainUrl |
| 大文件失败 | maxSize 与 nginx client_max_body_size 两边对齐 |
## 排查工具箱
```text
X-Request-Id(响应头)→ grep 日志文件 → 单请求全链路
/health → 存活判断
/swagger 或 /api.json → 接口与权限码核对(生产关闭则用测试环境)
/metrics → 错误率/耗时分布
监控页 → 主机/缓存/在线会话
database.debug → 临时开 SQL 日志(定位后关)
```
## 上线事故处置顺序
```text
① 评估影响面(可用性/数据/安全)
② 止血优先:回滚 or 临时配置(关功能/收紧限流)
③ trace_id / 日志定位根因
④ 修复 → 验证 → 复盘归档
```
## 相关
- [2.8 常见问题 FAQ](/zh/quickstart/faq.html)
- [3.12 常见问题与排错](/zh/guide/faq.html)