gpt4 book ai didi

ruby-on-rails - 改善缓慢的 Rails 启动时间(rails 控制台、rails 服务器)

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:35 30 4
gpt4 key购买 nike

我使用多个 Rails 应用程序,一些在 Rails 3.2/Ruby 2.0 上,一些在 Rails 2.3/Ruby 1.8.7 上。

他们的共同点是,随着他们的成长和添加更多的依赖项/ gem ,他们需要越来越长的时间来启动。开发、测试、生产、控制台,无所谓;有些需要 60 多秒。

首先分析导致加载时间如此缓慢的原因,其次改善加载时间的首选方法是什么?

最佳答案

有几种情况会导致这种情况。

  1. 过多的 GC 遍数和一般的 VM 缺点 - 请参阅 this answer以获得全面的解释。 Ruby <2.0 有一些非常慢的位可以显着提高加载速度;使用 Falcon 或 railsexpress 补丁编译 Ruby 可以极大地帮助这一点。默认情况下,所有版本的 MRI Ruby 使用不适合 Rails 应用的 GC 设置。
  2. 许多遗留 gem 必须迭代才能加载文件。如果您使用的是 bundler ,请尝试 bundle clean。如果您使用的是 RVM,您可以尝试创建一个新的 gemset。

就分析而言,您可以使用 ruby​​-prof 分析启动应用程序时发生的情况。您可以将 config/environment.rb 包装在 ruby​​-prof block 中,然后使用它生成启动周期的配置文件报告,例如 rails r ''。这可以帮助您追踪在引导过程中花费大部分时间的地方。您也可以分析各个部分,例如 boot.rb 中的捆绑程序设置,或 environment.rb 中的 #initialize! 调用。

您可能没有考虑的是 DNS 超时。如果您的应用程序在启动时执行 DNS 查找,但它无法解析,这些可能会阻止该过程 $timeout 秒(在某些情况下可能高达 30 秒!)。您也可以针对这些审核应用。

关于ruby-on-rails - 改善缓慢的 Rails 启动时间(rails 控制台、rails 服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437509/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com