【问题标题】:why use production over development for rails application为什么在 Rails 应用程序中使用生产而不是开发
【发布时间】:2011-05-08 02:05:40
【问题描述】:

两者之间有什么主要区别吗?我还没有看到解释主要区别的文档?性能??

【问题讨论】:

    标签: ruby-on-rails mongrel


    【解决方案1】:

    “开发”和“生产”操作模式之间存在显着差异,即使两者表面上看起来相似。

    在开发模式下,app/config/routes.rb 中的任何文件都会随每个请求重新加载。这可能需要相当长的时间来处理,但它的优点是可以根据对代码库的任何更改生成最新的响应,这可能是在开发环境中进行的。由于生产环境不应该在部署之间发生变化,Rails 将缓存您的控制器、视图、路由、帮助程序和模型以获得最佳性能。对源的任何更改都需要重新启动应用程序。

    开发的另一个特点是 Rails 的日志记录级别设置为debug,这是尽可能详细的。您不仅会获得每个 SQL 调用的详细细分,而且还会收到轻微警告和其他信息性消息,否则这些消息会在生产环境中被忽略。此日志记录对性能有很大影响,除非您尝试诊断问题,否则不应在生产环境中使用此日志记录。这些日志文件很快就会变得非常大,如果不重新启动 Web 服务器进程就很难轮换它们。

    在开发环境中还有一种方法可以从异常中拯救出来,并将它们呈现为人类可读的错误报告。这对于调试很有用,但在生产环境中可能会暴露有关您的应用程序的敏感细节,因为它通常包含有关文件系统、关键参数等的大量信息。绝不应在生产站点上启用此功能。

    这些差异可能并不明显,但您只需要比较config/environments/development.rbconfig/environments/production.rb 中的配置设置即可。不幸的是,有些默认值是什么并不明显,因为有时在这些文件中没有清楚地表达它们,但基本知识通常都在那里。

    【讨论】:

    • 完美!现在,如果我想在生产环境中打开调试模式,我还能将其设置为 DEBUG 吗?
    • 您可以在production.rb 中调整日志记录级别,但请注意在完成后将其关闭。它以每小时数 GB 的速度增长并不少见。
    【解决方案2】:

    在 Rails 生产环境中,您的应用程序代码被缓存,因此解释器不必在每次调用方法时都重新加载您的类。您的应用程序基本上存储在内存中。这给出了明确的速度改进。

    此外,默认情况下它的日志记录要少得多;例如,生产日志不像开发日志那样包含每个 sql 调用。

    【讨论】:

      【解决方案3】:

      缓存和错误处理。

      【讨论】:

      • 有了缓存,性能是否有大幅提升?假设我的页面不是静态的,而是在某种意义上非常动态,这仍然有益吗?
      • 所有应用程序代码将在请求之间缓存,因此不必在每个请求上解析它们。这就是为什么您可以更改文件并在开发环境中而不是在生产环境中获得即时更改的原因。在两种环境中加载应用程序并比较相同请求的网络砖输出,您会看到执行时间的差异。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 2019-02-09
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      相关资源
      最近更新 更多