Rails unicorn 重启为什么旧进程不退出

suupic · 2011年12月06日 · 最后由 suupic 回复于 2012年02月04日 · 4659 次阅读

unicorn 每次重启,都会出现新旧进程并存,旧进程不退出的状况。 如下,42 分启动 unicorn,44 分重启 unicorn,至 49 分 old master 还在运行 如果 stop 的话,需要 stop2 次才能停掉 2 个 master 进程

1000 2075 1 6 23:42 ? 00:00:25 unicorn_rails master (old) -c config/unicorn.rb -E development -D
1000 2096 2075 2 23:43 ? 00:00:09 unicorn_rails worker[0] -c config/unicorn.rb -E development -D
1000 2099 2075 3 23:43 ? 00:00:11 unicorn_rails worker[1] -c config/unicorn.rb -E development -D
1000 2102 2075 3 23:43 ? 00:00:12 unicorn_rails worker[2] -c config/unicorn.rb -E development -D
1000 2105 2075 3 23:43 ? 00:00:12 unicorn_rails worker[3] -c config/unicorn.rb -E development -D
1000 2138 2075 3 23:44 ? 00:00:09 unicorn_rails master -c config/unicorn.rb -E development -D
1000 2150 2138 5 23:44 ? 00:00:16 unicorn_rails worker[0] -c config/unicorn.rb -E development -D
1000 2153 2138 5 23:44 ? 00:00:14 unicorn_rails worker[1] -c config/unicorn.rb -E development -D
1000 2156 2138 5 23:44 ? 00:00:16 unicorn_rails worker[2] -c config/unicorn.rb -E development -D
1000 2159 2138 5 23:44 ? 00:00:17 unicorn_rails worker[3] -c config/unicorn.rb -E development -D
1000 2268 1582 0 23:49 pts/0 00:00:00 grep --color=auto uni

======= 脚本如下: cat /opt/script/unicorn.sh #!/bin/sh case "$1" in start)
sudo chmod 777 /var/run/ unicorn_rails -c config/unicorn.rb -E development -D
;; restart)
kill -USR2 $(cat /var/run/unicorn.pid)
;; stop)
kill $(cat /var/run/unicorn.pid)
;; *)
echo "Usage:unicorn.sh{start|restart|stop}"
;; esac

这里有一些讨论,应该会解决你的问题: http://ruby-china.org/topics/113

#1 楼 @lgn21st 多谢,原来只要把 before_fork 里的一段注释去掉就可以了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号