0

有时由于错误/错误(主要在单个文件中),我必须对生产代码进行热补丁,但我已经设置eager_loadcache_classestrue。由于这两个原因,服务器加载大约需要 2 分半钟,热补丁也是如此。

我的最终目标是减少服务器加载时间。一种方法是为应用程序启动时不需要的 gem 添加“require:false”,然后在需要时加载它们。但是是否可以只重新加载更新的文件而不是重新启动整个应用程序?

我正在使用 nginx 免费服务器(企业版 nginx 版本可能是一种提供零停机时间的解决方案,但在该版本中是否可行?)

4

1 回答 1

1

购买企业版 Nginx 对您没有帮助。Nginx 与 Phusion Passenger/Unicorn/Thin 搭配使用。零停机部署不应该在 Nginx 中实现,而应该在Passenger/Unicorn 中实现。我更喜欢使用 Unicorn,它免费、强大并且支持零停机部署。

在生产环境中,Rails 需要快速加载和缓存每个文件到服务器 HTTP 请求,我建议不要改变这种行为,改变它会减慢你的生产速度。

我强烈建议不要修改服务器上的文件。se Capistrano/Mina 进行部署。手动更改文件可能会中断生产,并且您肯定会有大量的停机时间。

Capistrano 可以帮助您使用一个命令来部署项目。如果出现问题,Capistrano 还可以帮助您快速恢复到以前的版本。

https://www.digitalocean.com/community/tutorials/how-to-set-up-zero-downtime-rails-deploys-using-puma-and-foreman

https://www.devroom.io/2011/09/14/lighting-fast-zero-downtime-deployments-with-git-capistrano-nginx-and-unicorn/

于 2019-07-10T21:01:19.933 回答