Christos Trochalakis <yati...@ideopolis.gr> wrote: > On Thu, Jun 25, 2015 at 11:26:26PM +0000, Eric Wong wrote: > >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. > > Yes, you are right socket activation is also an option! I have made some > experiments with a simple rack app to test it. > > systemd uses the LISTEN_FDS env variable that is an integer indicating the > number of inherited file descriptors. Those FDs have consecutive numbers > starting from `SD_LISTEN_FDS_START` which is `3` (man sd_listen_fds). > > So for example if LISTEN_FDS="2", UNICORN_FD should be "3,4". I used a > simple wrapper script for that. Here is the full configuration:
OK, I'll probably add LISTEN_FDS and LISTEN_PID support to unicorn directly so the wrapper is unnecessary. <snip> > KillMode=mixed I don't think KillMode=mixed is necessary, here. systemd can send SIGQUIT to workers. <snip> > TCP socket options are not applied by unicorn on inherited sockets (TCPSocket > === sock is false). systemd socket files have support for most options now but > we might want unicorn to `setsockopt` them as well. For example, > 'DeferAcceptSec', 'KeepAliveIntervalSec', 'NoDelay' are supported since v216, > so > they are not available in jessie (v215). They are now :) http://bogomips.org/unicorn-public/m/1435373879-4299-1-git-send-emai...@80x24.org.txt We don't have KeepAliveIntervalSec (aka TCP_KEEPINTVL) since it's not-portable and probably over Are you sure about that? > socket activation is a really interesting setup, but personally I would not > run > it with a large application. Clients would have to wait for the new master to > be up and running before a reply is returned, and that could take tenths of > seconds. The USR2 rexec solves that problem since both old and new workers are > accepting on the socket and we can kill the old ones when we are ready. In > that > case the PIDFile trick is handy to support zero downtime restarts with no > latency. Is it possible to make systemd fire up two unicorn masters? That would be a nice feature to have with socket activation. _______________________________________________ Pkg-ruby-extras-maintainers mailing list Pkg-ruby-extras-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ruby-extras-maintainers