在 nginx ruby on rails 的热补丁期间,我可以通过服务器重新启动来重新加载特定文件而不是整个应用程序吗



有时由于错误/错误(主要是在单个文件中),我必须热补丁生产代码,但我在开发环境中已将eager_loadcache_classes设置为 true。由于这两个,服务器大约需要 2 分半钟才能加载,热补丁也是如此。

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

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

购买企业版的Nginx对你没有帮助。Nginx与Phusion Passenger/Unicorn/Thin配对使用。零停机部署不应在 Nginx 中实现,而应在乘客/独角兽中实现。我更喜欢使用独角兽,它免费,功能强大,并且支持零停机部署。

在生产环境中,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/

最新更新