- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 rails 4.1 应用程序通过 SSH 连接到第二台非主服务器以执行后端作业。因此,当 rails 应用程序每天重新启动时,SSH 连接需要激活/启动(而不是第二个非主服务器需要启动/启动),否则应用程序崩溃。这是因为在 production.rb
中的预加载默认设置为 true。 (config.eager_load = true
)。
我很想通过禁用急切加载来打破这种依赖关系,但我无法找到有关性能影响的太多信息。所以,我的问题是...
1) 如果 eager_load
设置为 false
,这样简单会减慢应用程序的启动时间,还是应用程序会在第一次被击中时急切地加载资源?
3) 如果eager_load
只是关闭,这会在多大程度上影响应用程序的性能(更主观的问题)?
2) 执行 SSH 连接的模型在文件夹 app\models\legacy
下.而不是更改 eager_load
为假,该文件夹可以从急切加载的资源中排除吗?如果是这样,怎么做?我相信我需要编辑 config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}')]
但不完全确定。
生产.rb:
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
最佳答案
设置eager_load=false
可能会加速您的应用程序的启动,因为加载将被推迟到必要时。
但是,代价是您的应用程序可能会使用更多内存(这通常是最稀缺的服务器资源)。我怀疑如果您使用带有 eager_load=false
的多线程服务器(例如 puma),您也可能会遇到线程错误。 .
由于 Rails 自动包含所有 app/*
加载路径中的目录,我想不出一个简单的方法来排除 app/models/legacy
同时急切地加载其他所有内容。
相反,您可以移动 app/models/legacy
的内容例如legacy/
在您的项目的根目录中,并将其添加到 autoload_paths
:
config.autoload_paths += %W( #{config.root}/legacy )
关于ruby-on-rails - 在 production.rb 中禁用 eager_load 对性能有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835643/
我需要知道为什么eager_load最好是 false在非生产环境中?我听说过的一个论点是 eager_load eager 将大部分 Rails 和应用程序加载到内存中。因此,将 eager_loa
我知道当您使用 includes 并在联接表上指定 where 子句时,您应该使用 .references 例子: # will error out or throw deprecation warn
我有两个模型: class User default_scope -> { where(deleted_at: nil) } end class Order belongs_to :user
我的 rails 4.1 应用程序通过 SSH 连接到第二台非主服务器以执行后端作业。因此,当 rails 应用程序每天重新启动时,SSH 连接需要激活/启动(而不是第二个非主服务器需要启动/启动),
我有一个 Rails 应用程序和一个引擎。 当我的 environments/production.rb 中有 config.eager_load= true 时,应用程序崩溃并在引擎中给出以下错误
SQL 包含连接在内存中加载相关记录执行两个查询预加载否是是包括是(左外连接)是有时预加载(左外连接)是没有 我是从概念上知道的。 我想知道什么时候使用哪个 API。我搜索但没有找到确切答案。 最佳答
在大型 Rails 应用程序中,我注意到我们有一段代码可以生成大型 ActiveRecord::Relation。它在 .joins() 调用中使用自定义 SQL 片段——类似这样: def foos
我正在尝试运行 Rails (4.1.2) 控制台 rails c RAILS_ENV=test 我得到这个: > config.eager_load is set to nil. Please up
在使用 Capistrano 进行项目暂存部署期间,为了解决常见的数据库访问错误,我注意到 rake stderr 行: rake stderr: config.eager_load is set
我是一名优秀的程序员,十分优秀!