unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: Eric Wong <e@80x24.org>
To: Christos Trochalakis <christos@skroutz.gr>
Cc: Dmitry Smirnov <onlyjob@debian.org>,
	Hleb Valoshka <375gnu@gmail.com>,
	unicorn@packages.debian.org, unicorn-public@bogomips.org
Subject: Re: [DRE-maint] unicorn: native systemd service
Date: Thu, 25 Jun 2015 23:26:26 +0000	[thread overview]
Message-ID: <20150625232626.GA23882@dcvr.yhbt.net> (raw)
In-Reply-To: <20150625083118.GA22140@luke.ws.skroutz.gr>

+Cc unicorn-public list 
Christos Trochalakis <christos@skroutz.gr> wrote:
> Hello all,
> 
> I have recently migrated our main ruby application to systemd implementing zero
> downtime upgrades.
> 
> systemd doesn't like replacing the binary on the fly. There is one exception to
> this, services with PIDFile. When PIDFile is set, systemd reads it when the
> main process exits and replaces the main process.  nginx also had this issue a
> few months ago [0].
> 
> So, in order to support zero-downtime upgrades we have to use a pid file.

I don't think so.  You should be able to bind the listen socket in
systemd and rely on the socket activation features (setting the
UNICORN_FD environment variable to the created FD).

You still need to have the matching "listen" directive in the unicorn
config file so unicorn does not close it.

With socket activation, you should just be able to kill unicorn using
SIGQUIT (just master, or even all workers) and restart without ever
dropping a connection.  I do NOT suggest using SIGTERM for unicorn,
since that'll cause the master to kill all workers ASAP.

If the master dies before the workers (e.g. from SIGKILL),
systemd ought to just ignore the workers.

I don't actually know the systemd config at all, but anybody familiar
with systemd socket activation should have no problems setting the
UNICORN_FD env.

  parent reply	other threads:[~2015-06-25 23:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <16714105.fRFKlev1fp@debstor>
     [not found] ` <3137844.nsIDTWmvl4@debstor>
     [not found]   ` <CAAB-Kc=s-uSK83PcfDsybPRiYvTaLVxcu2x4eWDPaTf27AJ_XQ@mail.gmail.com>
     [not found]     ` <1810167.FXDESjsu8Z@debstor>
2015-06-24 23:26       ` unicorn: native systemd service Eric Wong
2015-06-25 23:43         ` Dmitry Smirnov
2015-06-25 23:49           ` Eric Wong
     [not found]   ` <20150625083118.GA22140@luke.ws.skroutz.gr>
2015-06-25 23:26     ` Eric Wong [this message]
2015-06-26 11:41       ` [DRE-maint] " Christos Trochalakis
2015-06-27  3:05         ` Eric Wong
2015-06-27  4:01           ` [RFC] emulate sd_listen_fds for systemd support Eric Wong
2015-06-30  8:47             ` Christos Trochalakis
2015-07-05  0:27               ` [PATCH v2] " Eric Wong
2015-06-30  9:20           ` [DRE-maint] unicorn: native systemd service Christos Trochalakis
2015-06-30 17:30             ` Eric Wong
2015-07-08 13:08               ` Christos Trochalakis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/unicorn/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150625232626.GA23882@dcvr.yhbt.net \
    --to=e@80x24.org \
    --cc=375gnu@gmail.com \
    --cc=christos@skroutz.gr \
    --cc=onlyjob@debian.org \
    --cc=unicorn-public@bogomips.org \
    --cc=unicorn@packages.debian.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/unicorn.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).