In the deployment I did kill -s USR2 `cat unicorn_pid` to gracefully
restart unicorn. But I noticed that unicorn workers were partially
restarted when using USR2.
The following is how I did test:
start unicorn in production environment:
the action has the following code:
def index
logger.info "-----------------------------------------fooo bar
---------"
logger.info "-----------------------------------fooo bar
---------"
end
then changed the code to:
def index
logger.info "--####---------------------------------fooo bar
---------"
logger.info "-----------------------------------fooo bar
---------"
end
and run kill -s USR2 `cat unicorn_pid`
and then tail the production.log (after several minutes)
Started GET "/" for 192.168.21.1 at Sat May 07 04:13:31 -0700 2011
Processing by NewHomeController#index as HTML
-----------------------------------fooo bar ---------
-----------------------------------fooo bar ---------
Rendered new_home/index.html.erb within layouts/new_home (15.5ms)
Completed 200 OK in 16ms (Views: 16.2ms)
Started GET "/" for 192.168.21.1 at Sat May 07 04:13:31 -0700 2011
Processing by NewHomeController#index as HTML
--####---------------------------------fooo bar ---------
-----------------------------------fooo bar ---------
Rendered new_home/index.html.erb within layouts/new_home (28.1ms)
Completed 200 OK in 29ms (Views: 28.9ms)
Started GET "/" for 192.168.21.1 at Sat May 07 04:13:31 -0700 2011
Processing by NewHomeController#index as HTML
-----------------------------------fooo bar ---------
-----------------------------------fooo bar ---------
Rendered new_home/index.html.erb within layouts/new_home (17.5ms)
Completed 200 OK in 20ms (Views: 18.4ms)
Started GET "/" for 192.168.21.1 at Sat May 07 04:13:37 -0700 2011
Processing by NewHomeController#index as HTML
--####---------------------------------fooo bar ---------
-----------------------------------fooo bar ---------
Rendered new_home/index.html.erb within layouts/new_home (13.5ms)
So it seems that unicorn was just partially restarted.
Best Regards,
Stone
Stone <stones.gao at gmail.com> wrote:> In the deployment I did kill -s USR2 `cat unicorn_pid` to gracefully > restart unicorn. But I noticed that unicorn workers were partially > restarted when using USR2.You need to send a SIGQUIT to the original master process, otherwise both masters and all workers continue running. This allows you to test the new deploy (combined with SIGWINCH). The last section of http://unicorn.bogomips.org/SIGNALS.html describes this process in detail.> The following is how I did test: > > start unicorn in production environment: > > the action has the following code:Ugh, don''t you have something like "ps axf" that shows you a process tree? It''s much easier just to *see* the process tree. -- Eric Wong