SC311 表示就绪状态撤回之后、旧请求仍在排空时,服务接受了新的工作。进程退出时,这些新工作可能会被切断。
| 诊断码 | SC311 FAIL |
|---|---|
| 阶段 | 排空流量 |
| CLI 退出码 | 1 |
| 含义 | 撤回就绪状态后发送的新请求得到了正常响应,没有被拒绝。 |
| 输出信息 |
|
| 首先检查 | 关闭期间用 rejectStatuses 中的状态码(默认 503)拒绝新的工作,或者停止接受连接。 |
服务应该如何拒绝新请求?
二选一:
- 在短暂的排空窗口内继续监听,对新请求返回
503。 - 关闭监听器,让连接被拒绝。
然后让 newRequests.rejectStatuses 和 newRequests.allowConnectionRefused 与你的选择保持一致。
{
"shutdown": {
"readinessWithdrawal": true,
"newRequests": {
"path": "/test/new-work",
"rejectStatuses": [503],
"allowConnectionRefused": true
}
}
}超时不算拒绝。服务必须返回配置中的状态码,或者明确拒绝连接。
如何确认已修复?
时间线应在 readiness withdrawn 之后、原来的请求结束之前,显示 new request rejected — HTTP 503 或连接被拒绝。
用于拒绝测试的路由要安全,也要有代表性。一个总是返回 503 的特殊路由能让测试通过,却证明不了真正的新工作会被挡住。