Rails应用程序的第一个请求非常缓慢

3
我的Rails应用程序的第一个请求在所有环境中都非常缓慢。这不应该是由于缓存/加载宝石的不同方式。两个小时前还好,没有进行任何重大更改。
我注意到我的应用程序变慢之前做了什么:
- 我在`production.rb`(而不是`development.rb`)中胡乱尝试:我正在玩弄`config.serve_static_assets = true` - 我执行了一堆任务来诊断为什么资产管道没有在生产中加载我的样式表和图像(例如`rake assets:precompile RAILS_ENV=production`和`rake:clean assets:precompile`)。
之后,我显然尝试撤消我所做的所有更改,但由于某种原因,现在我的应用在开发中很慢,而以前完全正常。
我该如何解决这个问题?
谢谢您的帮助:-)
更新1
当我发送一个对localhost:3000的请求时,只有在12-13秒后我才收到: `Started GET "/" for ::1 at random time`
渲染行为正常。第一个请求后的所有请求都很好。
更新2
在我的应用程序的旧版本中,我执行了以下操作:
- 用新的`app`文件夹替换旧的文件夹 - 用新的`db`文件替换旧的文件 - 用新的`config`文件替换旧的文件
一切都很顺利,但仍然不知道最初出了什么问题。请注意,昨天的应用程序版本仍然运行缓慢,因此这不是与Rails无关的问题。

你使用像是 Git 这样的版本控制软件吗? - spickermann
我搞砸了,我有一段时间没有使用它了。所以那不是一个理想的解决方案。 - ysr1991
尝试使用像Rack-mini-profiler这样的工具,它能帮忙吗?还是你认为请求处理有一个长时间的“启动”期,而不是花费长时间才能完成? - Pavel Bulanov
这不是特定页面的问题,如果是第一次请求,则所有页面都会很慢。而以前不是这种情况。 - ysr1991
我在新公司的项目中发现了相同的问题,我怀疑可能是Passenger引起的(使用Puma或webrick时没有问题)。你找到解决方案了吗? - user3033467
显示剩余3条评论
2个回答

0

答案

在本地主机上生产时,我的资源未被提供(尽管它们在预编译后出现在公共目录中)。

在production.rb中: config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 已更改为: config.serve_static_files = true 或者 config.serve_static_assets = true.

这也会显然减慢开发环境中的第一个请求。


-1

我也遇到了这个问题,并找到了瓶颈所在。

问题出在Windows上实现OpenSSL :: Random.random_bytes(请参见:https://github.com/rails/rails/issues/25805)。 它用于cookies。

我为我的调试机器编写了此解决方案。 但这非常危险,不应在生产中使用。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接