【问题标题】:First request to rails app extremely slow第一次请求 Rails 应用程序非常慢
【发布时间】:2016-06-01 11:20:21
【问题描述】:

对我的 rails 应用程序的第一个请求在所有环境中都非常缓慢。

这不应该是由于缓存/加载宝石的不同方式。两个小时前还好,没有大的变化。

在我发现我的应用变慢之前的几个小时我做了什么:

  • 我在 production.rb 中搞砸了(不在 development.rb 中):我在玩 config.serve_static_assets =真的

  • 我做了一堆任务来诊断为什么资产管道没有在生产中加载我的样式表和图像(例如 rake assets:precompile RAILS_ENV=productionrake:clean assets:precompile)。

之后我显然试图撤消我所做的所有更改,但由于某种原因,我的应用程序现在开发速度很慢,而之前它非常好。

我该如何解决这个问题?

提前致谢:-)

更新 1

当我发送对 localhost:3000 的请求时,仅在 12-13 秒后我收到: 开始 GET "/" for ::1 at 随机时间

渲染行为正常。第一个请求之后的所有请求都可以。

更新 2

在我的应用程序的旧版本中,我执行了以下操作:

  • 用较新的文件夹替换旧的“应用”文件夹
  • 用新的替换旧的“db”文件
  • 用新的替换旧的“配置”文件

一切都很顺利,但一开始仍然不知道哪里出了问题。请注意,昨天的应用程序版本仍然运行缓慢,因此这不是与 Rails 无关的问题。

【问题讨论】:

  • 你使用git之类的版本控制软件吗?
  • 搞砸了,好久没用了。所以这不是一个可取的解决方案。
  • 尝试Rack-mini-profiler 之类的方法 - 有帮助吗?或者您假设请求处理开始在很长一段时间后,而不是需要很长时间?
  • 这不是特定于页面的问题,如果是第一个请求,所有页面都会很慢。虽然以前不是这种情况。
  • 您的 Rails 应用程序的日志中有什么有趣的事情吗?

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

回答

在本地主机上的生产中,不知何故我的资产没有提供(虽然它们确实出现在预编译后的公共目录中)。

在 production.rb 中: config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 改为: config.serve_static_files = true 甚至 config.serve_static_assets = true。

这也明显减慢了开发环境中的第一个请求

【讨论】:

    【解决方案2】:

    我也有这个问题,我发现了瓶颈。 在 Windows 上实现 OpenSSL::Random.random_bytes 的问题(参见:https://github.com/rails/rails/issues/25805)。它用于 cookie。

    我为我的调试机器编写了这个解决方案。但这很危险,不能在生产中使用

    module OpenSSL
      module Random
        def self.random_bytes(length)
          ::Random.new.bytes(length)
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2012-10-12
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多