优雅停机三步:停止接受新连接,把手上的请求跑完,再释放连接池和消息通道后退出。
监听 SIGTERM 触发关闭流程,同时设最长等待时间做兜底,超过就强制退出,避免卡死。
容器里平台是先发 SIGTERM 再 SIGKILL,本地等待时间必须小于容器给的宽限期,否则照样被砍。
process.on('SIGTERM', async () => {
server.close() // 停止接受新连接
await Promise.race([drain(), sleep(15000)]) // 最多等 15 秒
await db.destroy()
process.exit(0)
})
# K8s 侧:terminationGracePeriodSeconds 要大于这里的等待时间
# 再配 preStop 加几秒延迟,等负载均衡摘完流量
THE END






暂无评论内容