Go 服务优雅停机实现:signal 监听、Shutdown 与资源清理
优雅停机:收到退出信号(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 配合。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。