golang平滑重启

问题

  • 程序升级过程中,如何不影响正在处理的请求?
  • 正在处理的请求怎么办?
  • 新进来的请求怎么办?

正在处理的请求

  • 等待处理完成后退出
  • go1.8就支持了

新来的请求怎么办?

  • Fork一个子进程,继承父进程的监听socket
  • 子进程启动成功后,接收新的连接
  • 父进程停止接收新的连接,等已有的请求处理完毕,退出
  • 优雅重启成功

子进程如何继承父进程的文件句柄?(linux下)

  • 通过os.Cmd对象中的ExtraFiles参数进行传递
  • 文件句柄继承实例分析

猜你喜欢

转载自blog.csdn.net/ma2595162349/article/details/113003598