SC310 表示收到 SIGTERM 之后,就绪检查路由仍在报告就绪。负载均衡器可能会继续把流量发给这个已经在关闭的实例。
| 诊断码 | SC310 FAIL |
|---|---|
| 阶段 | 排空流量 |
| CLI 退出码 | 1 |
| 含义 | 开启 readinessWithdrawal 后,从收到 SIGTERM 一直到截止时间,就绪检查路由仍在返回就绪状态码。 |
| 输出信息 |
|
| 首先检查 | 收到 SIGTERM 时,让就绪检查路由返回 503(或者停止监听),这样负载均衡器就不再发送流量。 |
如何撤回就绪状态?
信号一到就设置一个排空标志,并让就绪检查路由返回表示未就绪的状态码:
let draining = false;
app.get("/health", (_request, response) => {
response.sendStatus(draining ? 503 : 200);
});
process.on("SIGTERM", () => {
draining = true;
server.close();
});关闭监听器也算撤回,因为就绪检查的连接会被拒绝。就绪检查请求超时则不算撤回,因为这会让流量状态变得不明确。
如何确认已修复?
时间线应在 signal sent 之后不久记录 readiness withdrawn。在可控的排空过程中手动测试这个路由,确认它从就绪状态码变成 503 或其他表示未就绪的状态码。
如果应用的状态变了,测试却没有观察到,检查 readiness.path 是否指向平台使用的同一个路由。