Skip to content

问题排查手册 ​

排查的核心不是「读代码」,而是先把问题归位到某一层,再用最短路径证伪。本篇给出五类高频故障的定位路径。

0. 通用分层定位法 ​

任何线上问题,先按这个顺序排除:

记住四层的顺序:网关 → 检测服务 → 策略 → checker。反向跳层排查(直接看规则)是最常见的时间浪费。

1. 现象:请求被拒绝 / 返回鉴权失败 ​

检查项位置结论
签名是否有效网关 PlatformSignService 校验逻辑签名错误或时间戳超窗 → 客户端时钟/签名算法问题
令牌是否有效网关 JwtExtPlugin令牌过期或已注销 → 重新签发
URL 是否有功能权限网关 FunctionPermissionCache权限缓存未刷新 → 查权限中心事件下发
路由是否存在ShenYu selector/rule 配置规则未注册 → 检查服务是否成功注册元数据

判据

网关层拒绝的特征是「请求根本没进业务日志」。如果业务日志里有请求但结果异常,问题一定在网关之后。

2. 现象:规则命中但客户没被处置 ​

按可能性从高到低:

  1. 规则是预上线状态:只产生试命中,不参与处置。查规则状态是否为 PRE_ONLINE。
  2. 命中的是试运行结果:响应组装只取正式命中(hitFormalRules),试命中(hitTrailRules)仅在明细中可见。
  3. 策略集未包含该规则集:规则属于 A 规则集,但策略引用的是 B。查策略集的过程配置。
  4. 处置动作是异步的:加名单、点水任务、信用评分经 Kafka 异步执行,回包不含动作结果。查动作消费是否堆积。
  5. 客户侧未执行处置:回包给了动作,但客户端/服务端没有落地执行。

排查动作是否真的执行,看 Kafka 消费链路:规则命中 → 动作消息 → RuleActionConsumer → 名单库/点水服务。

3. 现象:误拦截 / 命中率异常升高 ​

可能原因定位方法
名单被批量误加查名单来源分布:RULE_HIT(规则自动加)、OPEN_API_ADD(客户接口加)、人工导入;重点看规则自动加的名单项
规则条件被改查规则操作日志(策略中心记录)与规则快照
预处理字段值错乱查 trace 中 prepro.* 的实际取值与类型
指标口径变化查指标窗口与过滤条件是否被修改,比对同期值
设备指纹找回错误查 sid 来源:NEID / RULE / ES / NEW,找回策略命中异常会导致设备被错误合并

处理顺序:先止血再定位。止血手段是锁定规则或下线名单匹配器,而不是回滚整个策略集。

4. 现象:响应变慢 / 超时 ​

各层的典型耗时特征:

层特征常见原因
网关首包时间整体抬升鉴权缓存失效导致回源、限流组件触发
检测服务P99 抖动但均值正常单个 handler 链环节阻塞、线程池打满
策略执行部分请求超时单个策略集超时不降级、并发任务过多
checker单次调用耗时高预处理脚本执行慢(Groovy 超时 300ms)、名单缓存未命中、指标走异步
存储回包后延迟Kafka 堆积、ES/HBase 写入变慢

关键判断:判定链路是同步的,落库链路是异步的。如果只有明细延迟而回包正常,问题在存储侧,不要动判定逻辑。

5. 现象:配置改了不生效 ​

这是最高频的问题,统一按三步查:

分模块的具体检查点:

配置类型生效路径检查点
规则/规则集管理端写库 → 缓存模块生成可执行模型 → 执行端每 120s 刷新缓存服务是否生成新版本
名单写库 → outbox 事件 → 增量同步任务写 Redis 分片generation 是否切换
指标写库 → 本地缓存按 modify_time 增量刷新缓存版本号
预处理写库 → 本地缓存刷新执行侧是否读到新配置
元数据字段元数据中心 → 事件中台 → 各服务 meta-client 缓存下游缓存最后同步时间
权限控制台写库 → 事件中台 → 网关权限缓存权限缓存是否更新

6. 现象:数据对不上(看板/报表) ​

差异表现可能原因
明细有、看板无入仓链路(Kafka → ClickHouse dwd)堆积或失败
看板有、明细无看板走预聚合表 ads_*_view_all,与明细表口径不同
两边都少上游根本没投递明细消息(判定被短路)
时间维度错位时区/窗口边界问题,注意统计口径是自然日还是滑动窗口

排查顺序:上游是否投递 → Kafka 是否有堆积 → 消费者是否写入成功 → 查询用的是哪张表。口径问题优先怀疑表的选择,而不是数据丢了。

7. 排查工具一览 ​

想确认的事看哪里
请求是否到达网关访问日志、检测服务入口日志
走了哪些环节链路 trace(检测上下文 resultStatus 与各 handler 标记)
判定结果明细检测明细(ES/ClickHouse)与命中记录 topic
配置变更历史各中台操作日志(@OperationLog 埋点)
缓存是否最新各服务缓存最后刷新时间、事件拉取游标
服务健康各应用健康检查接口、QOS 端点

排查红线

线上排查时不要直接改数据库或手动清缓存。名单缓存有 generation 切换机制、规则缓存有版本校验,手工干预会破坏一致性,正确做法是走管理接口或等待对账任务。

最近更新

内部资料,请勿外传