Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 正在经历性能不佳的Rails_Ruby On Rails - Fatal编程技术网

Ruby on rails 正在经历性能不佳的Rails

Ruby on rails 正在经历性能不佳的Rails,ruby-on-rails,Ruby On Rails,将应用程序升级到Rails 3后,我的性能变差了 升级之前,我得到了60ms-100ms的响应时间 升级后,我得到300ms-1500ms响应时间 日志显示了每次的响应时间示例: Rails 3.0.0:在1454ms内完成200 OK(视图: 1314.6ms |活动记录:25.1ms) Rails 2.3.8:在31毫秒内完成(视图:27,分贝:1)| 200正常[已过滤] 我试过使用passenger和“rails服务器”运行(两个结果都很接近)。我创建了两个相同的应用程序(运行在2.3.

将应用程序升级到Rails 3后,我的性能变差了

升级之前,我得到了60ms-100ms的响应时间

升级后,我得到300ms-1500ms响应时间

日志显示了每次的响应时间示例:

Rails 3.0.0:在1454ms内完成200 OK(视图: 1314.6ms |活动记录:25.1ms)
Rails 2.3.8:在31毫秒内完成(视图:27,分贝:1)| 200正常[已过滤]

我试过使用passenger和“rails服务器”运行(两个结果都很接近)。我创建了两个相同的应用程序(运行在2.3.8和3.0.0中)来演示性能差异。导致性能问题的代码是:

<%- @posts.each do |post| -%>
  <h1><%= post.title %></h1>
  <p><%=truncate post.body %></p>
  <%- post.comments.each do |comment| -%>
    <h2><%= comment.title%></h2>
    <p><%=truncate comment.body %></p>
    <ul>
    <%- comment.ratings.each do |rating| -%>
      <li><%=truncate rating.notes %></li>
    <%- end -%>
    </ul>
  <%- end -%>
<%- end -%>

对于完整来源,项目可在以下位置获得:


谢谢

没有太多事情要做,任何人都无能为力

生成的源文件

用红宝石

真的吗

嵌套循环

选择n+1
?是否需要在某些查询中指定需要加载的特定关联

--编辑--

ActiveRecord查询API和性能特征已从v2显著更改为v3

也许你需要一些联想

要在帖子中加载评论,请使用

@posts = Post.includes(:comments)
@posts = Post.includes(:comments => :ratings)
要在帖子中加载评论和评论评级,请使用

@posts = Post.includes(:comments)
@posts = Post.includes(:comments => :ratings)

请包括您在测试中使用的Ruby版本

试着在Ruby 1.9.2-head上运行Rails 3,看看是否注意到了不同。您可以使用类似的工具来非常轻松地尝试多个版本的Ruby

如本文所述,1.9.1似乎存在一些性能问题。如果您将Ruby Enterprise Edition与Rails 3一起使用,那么也可能会导致一些性能问题。如果您使用的插件与Ruby 1.9不兼容,请确保您使用的是REE>=1.8.7-2010.02,如上所述


我相信Rails 3的开发正在进行中,并且已经进行了后端口,以便在早期版本上运行。

如果webrick和passenger提供了类似的性能,那么您还没有设置passengerproperly@Matt嗯,它是本地机器(运行MacOSX)上的一个相对较小的应用程序。安装GEM后,我遵循了乘客设置指南。这是一个干净的SnowLeopard安装,我尝试在开发和生产之间切换机架和Rails环境。还有其他想法吗?嗨,正义。很抱歉,这很难精确,但我发现应用程序的速度正在放缓。日志显示ActiveRecord查询大致相同,但视图渲染时间增加了100倍。我只是想知道其他人是否也经历过类似的问题。@Justice Hi Justice。很抱歉,我无法发布原始项目的任何源代码,但我花了一个小时生成了似乎有相同问题的示例项目。该项目非常简单,只具有基本的嵌套循环。我添加了一些关于快速加载的提示。这些提示对你的项目有帮助吗?嗨,正义。谢谢你的更新。这减少了我发布的两个示例应用程序的运行时间;我目前正在私有应用程序中使用一些急切的加载,但我一定会检查以找到更多的改进。然而,我更关心的是从Rails 2.3.8迁移到Rails 3.0.0,以及我经历的“五个十”减速。谢谢你提供的好信息。您知道延迟加载是否可以在应用程序范围内默认?再次感谢!作为补充说明。我推送了一个新版本的代码,以便其他人可以看到在使用渴望加载时的性能改进。这些测试现在将进行基准测试,我发现这些测试在解决一些环境问题时非常有用。另外,Rails 3.0.0中的急切加载似乎比Rails 2.8.7中的性能改进更大(对我来说)。谢谢你的建议。ruby——版本给出:ruby 1.8.7(2009-06-12 patchlevel 174)[universal-darwin10.0]我正在部署到Heroku(目前只支持1.8.7和1.9.1),我不确定我的插件兼容性(需要一些时间进行测试)。我将检查示例代码在不同的ruby版本中是否有任何性能变化。@Kevin Sylvestre:Heroku确实支持REE的正确版本,正如他们在最新博文中所指出的:您可以通过键入
Heroku stack
@Awgy Oops来检查正在运行的堆栈!谢谢你说得对!我将此作为指导原则:。看起来他们有一些过时的文档。谢谢,我很快就会测试它。@Awgy我刚刚完成了RVM的计算和测试!在示例应用程序中使用1.9.2将响应时间减少到使用1.8.7时的20%。现在我只需要整理一些依赖项!谢谢你的帮助!这正是我所需要的@凯文·西尔维斯特:我很高兴听到这有帮助=)