Shutdown Check

搜索文档

查找页面或章节

SC312:请求结束过早,无法测试拒绝

SC312(请求结束过早,无法测试拒绝)表示排空期间还没来得及发出新请求,进行中的工作就已经结束。改用运行时间更长的测试请求。

SC312 表示 shutdown-check 还没发送新请求,进行中的测试请求就已经结束了。没有仍在排空的旧工作,测试就无法证明服务在排空期间如何处理流量。

诊断码SC312 FAIL
阶段排空流量
CLI 退出码1
含义到了该发送新请求的时候,进行中的工作已经结束,因此观察不到排空期间的拒绝行为。
输出信息
  • Work finished before new-request rejection could be checked; use a longer-running workload
首先检查使用运行时间更长的测试请求,确保发送新请求时旧工作仍在排空。

如何修复?

  1. 让可控的测试请求运行得更久。
  2. 收到 SIGTERM 后立即撤回就绪状态。
  3. 去掉修改就绪状态之前不必要的延迟。
  4. 让新请求的路由足够快,能在截止时间前返回。

测试请求要持续足够长的时间,让就绪检查轮询和新请求都能完成,同时仍能在 shutdown.deadlineMs 之前从容结束。

不要为了掩盖时序问题就关掉拒绝检查。如果你的生产平台在关闭期间仍可能转发流量,保留这项检查,并让测试的时间窗口稳定可靠。

如何确认已修复?

修复后的顺序是:先 readiness withdrawn,再 new request rejected,最后 work request finished。在 CI 上多运行几次,确认在负载下旧工作不会先结束。

如果撤回就绪状态本身就很慢,修正这个状态切换,而不是给测试请求加上过长的人为延迟。