Ruby 辛纳特拉:热代码推动生产?

Ruby 辛纳特拉:热代码推动生产?,ruby,nginx,sinatra,passenger,unicorn,Ruby,Nginx,Sinatra,Passenger,Unicorn,当我将新代码从我的Sinatra应用程序推送到我的生产服务器时,我当前正在通过触摸tmp/restart.txt触发passenger的重新启动,这将加载新的更改。问题是,在这个过程中,站点基本上关闭了大约10秒 如何设置服务器以完全避免停机 也就是说,我希望应用程序继续提供旧版本的代码,直到新代码完全加载,然后立即切换到新代码 由于这是一个生产环境,因此使用霰弹枪或sinatra/重新装弹机在这里不起作用。最后,如果答案取决于应用程序服务器,我会对如何使用unicorn和passenger进行

当我将新代码从我的Sinatra应用程序推送到我的生产服务器时,我当前正在通过触摸
tmp/restart.txt
触发passenger的重新启动,这将加载新的更改。问题是,在这个过程中,站点基本上关闭了大约10秒

如何设置服务器以完全避免停机

也就是说,我希望应用程序继续提供旧版本的代码,直到新代码完全加载,然后立即切换到新代码


由于这是一个生产环境,因此使用霰弹枪或sinatra/重新装弹机在这里不起作用。最后,如果答案取决于应用程序服务器,我会对如何使用unicorn和passenger进行操作感兴趣。

您需要的是滚动重启。Phusion客运企业支持这一点:

您看到了吗?对于passenger,只需触摸tmp/restart.txt,passenger将在下一个请求时重新启动应用程序。@hdgarood,我认为我的OP不清楚,或者我对passenger/nginx的理解不完全清楚,但您所描述的实际上就是我目前正在做的事情。但你提到的下一个请求需要10秒才能完成complete@Jonah那样的话,我可能帮不上忙;)独立启动sinatra应用程序需要多长时间?也是10秒吗?@hdgarood是的,我想时间差不多了。我希望有人回答这个问题,因为我也想知道:)这正是我想要的,泰