SC312 表示 shutdown-check 还没发送新请求,进行中的测试请求就已经结束了。没有仍在排空的旧工作,测试就无法证明服务在排空期间如何处理流量。
| 诊断码 | SC312 FAIL |
|---|---|
| 阶段 | 排空流量 |
| CLI 退出码 | 1 |
| 含义 | 到了该发送新请求的时候,进行中的工作已经结束,因此观察不到排空期间的拒绝行为。 |
| 输出信息 |
|
| 首先检查 | 使用运行时间更长的测试请求,确保发送新请求时旧工作仍在排空。 |
如何修复?
- 让可控的测试请求运行得更久。
- 收到
SIGTERM后立即撤回就绪状态。 - 去掉修改就绪状态之前不必要的延迟。
- 让新请求的路由足够快,能在截止时间前返回。
测试请求要持续足够长的时间,让就绪检查轮询和新请求都能完成,同时仍能在 shutdown.deadlineMs 之前从容结束。
不要为了掩盖时序问题就关掉拒绝检查。如果你的生产平台在关闭期间仍可能转发流量,保留这项检查,并让测试的时间窗口稳定可靠。
如何确认已修复?
修复后的顺序是:先 readiness withdrawn,再 new request rejected,最后 work request finished。在 CI 上多运行几次,确认在负载下旧工作不会先结束。
如果撤回就绪状态本身就很慢,修正这个状态切换,而不是给测试请求加上过长的人为延迟。