全栈开发
后端基础
【Q005】生产环境的某个接口报错,如何定位

生产环境的某个接口报错,如何定位

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 6 (opens in a new tab)

Author 回答者: shfshanyue (opens in a new tab)

通常按照以下步骤进行定位

  1. 测试环境是否能够复现,若复现在测试环境测试并修复
  2. 有没有异常报警系统,如 sentry,如果有在 sentry 中查看异常堆栈信息以及相关上下文,定位代码
  3. 如果堆栈信息不足够找到问题,看有没有链路追踪工具,如 zipkin。从 sentry 中找到 requestId/traceId,通过 requestId 结合 kibana / ElasticSearch 定位相关的数据库日志/上下游服务链路日志
  4. 如果以上都不行,查看接口相关代码

既然报错,那么一定会在异常上报系统中找到这条问题进行定位。如果在报警系统中没有定位到问题,可以查看

  1. 报警系统是否已限流,致使无法上报
  2. 复现异常时,抓包查看报警相关的 API,查看是否已上报

最怕的是那种接口没报错,但是业务方反馈数据有误的问题了,只能开了 debug,进行代码调试了

Author 回答者: zhangxiaokun (opens in a new tab)

zipkin sleuth