zero downtime deploys

Suraj Kurapati sunaku at gmail.com
Fri Nov 13 17:54:05 EST 2009


Hello,

I tried using preload_app with the "zero downtime deploys" trick of
sending SIGQUIT to the old master in before_fork(), as described in:

  http://unicorn.bogomips.org/Unicorn/Configurator.html
  http://github.com/blog/517-unicorn

This significantly reduced, but did not eliminate, the transition time
when the new workers take over (step #2 below):

1. old master (and its workers) is killed in before_fork()
2. workers re-establish DB connections in after_fork()
3. workers are ready to work, at the bottom of after_fork()

Why do we kill the old master in before_fork() when the new workers
are really ready to work much later?  Shouldn't we kill the old master
at the *bottom* of after_fork() --- when the new workers are really
ready to work?

Thanks for your consideration.


More information about the mongrel-unicorn mailing list