起因
有同学反馈 发布 Go 服务代码 监控报警会出现一堆 5xx 报警
原因
查看生产环境的项目部署脚本 发现目前的部署脚本会
supervisorctl restart monkey_interact_service
暴力重启 supervisor 托管的守护进程
会导致 go 的 server 先 stop 停止 web 服务,再 start 提供新的 web 服务,
导致上线过程中的请求失败 监控报警群里一吨报警
解决方案
给 Go 进程发送 SIGUSR2 信号 优雅重启 过程中不会中断 web 服务
go web 服务可以采用 gracehttp oversee 等成熟的技术方案
github.com/facebookarchive/grace
github.com/jpillora/overseer
验证 — 实践是检验代码的唯一标准
未使用优雅重启前supervisorctl restart monkey_