对rails应用程序的首次请求极其缓慢

时间:2016-06-01 11:20:21

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

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

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

在我注意到我的应用变慢之前几个小时我做了什么:

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

  • 我做了很多任务来诊断为什么资产管道没有在生产中加载我的样式表和图像(比如 rake assets:precompile RAILS_ENV = production rake:clean资产:预编译 )。

之后我显然试图撤消我所做的所有更改,但出于某种原因,我的应用程序现在开发速度很慢,而之前完全没问题。

我该如何解决这个问题?

提前致谢: - )

更新1

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

渲染行为是正常的。第一个请求之后的所有请求都没问题。

更新2

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

  • 将旧应用程序' -folder替换为较新的
  • 用旧版本
  • 替换旧的' db'文件
  • 将旧的'配置文件替换为较新的

一切都在顺利进行,并且仍然不知道首先出现了什么问题。请注意,昨天的应用程序版本仍然运行缓慢,因此这不是非导轨相关的问题。

2 个答案:

答案 0 :(得分:0)

<强>答案

在localhost上的生产中,我的资产不会被提供(虽然它们在预编译后出现在公共目录中)。

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

这也显着降低了开发环境中的第一个请求

答案 1 :(得分:-1)

我也有这个问题,我发现了瓶颈。 在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