Go 服务优雅停机实现:signal 监听、Shutdown 与资源清理
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
优雅停机:收到退出信号(SIGTERM/SIGINT)后停止接收新请求、处理完进行中的任务再退出。实现:① signal.Notify 监听 os.Interrupt/SIGTERM;② http.Server.Shutdown(ctx):带超时等待活跃连接完成;③ 关闭下游资源:DB 连接池、Redis、MQ consumer 先停止消费再关闭;④ goroutine 退出:context cancel 广播;⑤ 超时兜底:Shutdown 超时后强制退出(os.Exit)。K8s 场景:preStop hook + terminationGracePeriodSeconds 配合。
回复
0 条回复