服务重启切断正在处理的请求,优雅停机怎么做

优雅停机三步:停止接受新连接,把手上的请求跑完,再释放连接池和消息通道后退出。

监听 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
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容