极客时间对于推广渠道会有返利优惠,比如山月在极客时间买了一门课,再把课程分享给好友购买,这时极客时间会向山月返利20元左右。
而我现在做了一个返利平台,你可以在上边通过山月的链接购买课程,此时极客时间会向我返利。为了共同学习,而你可以添加我的微信 (shanyue94),我将把极客时间给我的返利发一个红包全部返给你

# 上游服务不存在或未响应

# 情景再现

当日产品反馈在测试环境中某个请求变红 (status code: 400)

# 捉虫

  1. 该请求为 GET,拿到 curl 进行多次重放,bug 复现
  2. sentry 顺利接收异常,获取到错误码
  3. 异常为自定义异常,未携带原始异常 (originalError)
  4. 在本地启动后端服务,curl 重放,bug 复现
  5. 检索代码,根据路由及错误码定位到异常位置: 一个请求考试服务(内部服务)的接口
  6. 打印该考试服务异常请求的 http request/response,reponse 为 502,上游服务不存在

# 原因

内部服务无疑应该是最健壮最稳定的服务,为什么会不存在?

原因是该考试服务对个别业务后端开启了分支环境,通过在 k8s 中为分支新建 service 来部署,而这些业务后端直接请求考试服务的分支环境。

而运维同学在近一天中清理了测试环境许多无用的分支环境(避免过多资源消耗),造成误杀。

# 解决

对考试服务切对应分支,git push,CICD 中自动部署分支环境,解决问题。

# 反思

从定位到解决问题,花费了近两个小时,而排查时间本可以更短。

而瓶颈处在于需要在本地调试服务,检索代码,定位异常,这大大加大了排查问题的时间

直接原因是自定义异常中丢失了原始异常信息(originalError),从而丢失了上下文信息,如 uri/request/response,需要在本地调试来获取这些丢失的上下文

关于山月

我的项目:
我的微信:shanyue94,欢迎交流
Last Updated: 4/21/2021, 2:19:15 PM