goagain

Zero-downtime restarts in Go

  • Owner: rcrowley/goagain
  • Platform:
  • License:: Other
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

goagain

Zero-downtime restarts in Go

The goagain package provides primitives for bringing zero-downtime restarts to Go applications that accept connections from a net.TCPListener or net.UnixListener.

Have a look at the examples because it isn't just a matter of importing the library and everything working. Your main function will have to accomodate the goagain protocols and your process will have to have some definition (however contrived you like) of a graceful shutdown process.

Installation

go get github.com/rcrowley/goagain

Usage

Send SIGUSR2 to a process using goagain and it will restart without downtime.

example/single/main.go: The Single strategy (named because it calls execve(2) once) operates similarly to Nginx and Unicorn. The parent forks a child, the child execs, and then the child kills the parent. This is easy to understand but doesn't play nicely with Upstart and similar direct-supervision init(8) daemons. It should play nicely with systemd.

example/double/main.go: The Double strategy (named because it calls execve(2) twice) is experimental so proceed with caution. The parent forks a child, the child execs, the child signals the parent, the parent execs, and finally the parent kills the child. This is regrettably much more complicated but plays nicely with Upstart and similar direct-supervision init(8) daemons.

Main metrics

Overview
Name With Ownerrcrowley/goagain
Primary LanguageGo
Program languageGo (Language Count: 2)
Platform
License:Other
所有者活动
Created At2011-08-27 16:55:16
Pushed At2019-02-13 23:18:41
Last Commit At2014-04-24 11:03:47
Release Count0
用户参与
Stargazers Count2.1k
Watchers Count81
Fork Count143
Commits Count62
Has Issues Enabled
Issues Count18
Issue Open Count6
Pull Requests Count3
Pull Requests Open Count5
Pull Requests Close Count7
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private