Ruby-on-rails 4性能下降

马特·托马斯(Matt Thomas)

升级到Rails后,我发现了严重的性能问题。

我最近将项目从Rails 2和Ruby 1.8升级到Rails 4和Ruby 2.0。在Internet上阅读时,我了解到升级可以立即提供出色的性能改进(最多30%)。不幸的是,我发现在某些情况下性能会差很多,例如某些报告以前需要20秒左右,而现在需要40秒。

我看到一些帖子暗示垃圾收集可能是问题所在。使用一些推荐的设置后,我发现某些较长的报告实际上较短,但较短的报告仍然差很多。

作为升级的一部分,我已经使用了简洁的JavaScript进行视图渲染,但这似乎并没有导致性能问题-大多数时间都花在了模型上。

有人知道我是否缺少某些配置“陷阱”吗?升级是否还有其他人出现性能问题?

提前致谢。

大卫·奥尔德里奇

升级中总会出现一些极端情况,其中某些类型的操作运行速度较慢,而其他类型的运行速度更快。最好只是遵循常规的性能调整技术,并使用Oink gem和NewRelic等工具来分析最慢的问题。

为严格起见,通常最好在升级之前收集尽可能多的性能分析数据,这样您就可以判断特定操作是否正在遭受更高的内存消耗,更多/更慢的垃圾收集,不同的生成的SQL(来自activerecord升级) ,正在创建更多对象。使用升级后分析,可能很难将数据放在上下文中,因此例如,您可以判断对于给定操作创建30个Post对象是否正常。

关于渴望加载,我们发现子弹是获得正确等级的非常有用的宝石。您说对了,当然不一定是Rails 3/4问题。

给我们带来的另一个痛苦点是不仅要减少查询的数量,还要注意是否真的需要创建一个对象。有时您可以仅获取数据进行显示而无需创建对象,从而摆脱困境。此外,我们现在非常小心(例如)隐式运行:

select * from books where client_id = 1 order by name

...为了创建书名的下拉列表,我们可以:

select id, name from books where client_id = 1 order by name

即使在数据库侧有时是微不足道的差异(在数据库上100ms对20ms,在Rails上2000ms对500ms),它在Rails方面的效率也大大提高。

再次强调,Rails 3/4可能无关紧要,除非在Rails 4中有一个怪癖,使它的效率更低。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby on Rails的方法基准性能

来自分类Dev

Rspec 3.0.0更新Ruby on Rails下降测试

来自分类Dev

Ruby on Rails 4中的关联

来自分类Dev

ruby on rails 和 bootstrap 4

来自分类Dev

Ruby on Rails 4损坏PDF文件

来自分类Dev

无法让茧在Ruby on Rails 4上工作

来自分类Dev

Ruby on Rails 4 Routing/Views/Path

来自分类Dev

Ruby on Rails 4与内部联接的区别

来自分类Dev

Ruby on Rails 4中的DateTime格式

来自分类Dev

设计Ruby On Rails 4路线

来自分类Dev

Ruby on Rails 4:Pluck结果散列

来自分类Dev

Ruby on Rails 4测试单元跳过验证

来自分类Dev

Ruby on Rails 4:模态新动作

来自分类Dev

Ruby on Rails 4-简化concat

来自分类Dev

在Rails上以ruby上传图像或文件4

来自分类Dev

Ruby on Rails 4使用条件渲染:json

来自分类Dev

Ruby on Rails 4中的命名/大写用法

来自分类Dev

Ruby on Rails 4与内部联接的区别

来自分类Dev

Ruby on Rails 4表单验证按钮

来自分类Dev

在Ruby On Rails 4上搜索[帮助]

来自分类Dev

设计Ruby On Rails 4路线

来自分类Dev

售票员Ruby on Rails 4

来自分类Dev

试图在Ubuntu的rails 4上安装ruby和ruby吗?

来自分类Dev

ruby_on_rails rails 4参数丢失或值为空

来自分类Dev

Ruby / Rails性能:OpenURI与NET:HTTP与Curb与Rest-Client

来自分类Dev

Ruby / Rails性能:OpenURI,NET,HTTP,Curb,Rest-Client

来自分类Dev

如何使Ruby on Rails(Rails v4,Ruby v1.9.3)与MySQL一起使用

来自分类Dev

Ruby on Rails 4-使用什么认证gem?

来自分类Dev

Ruby on Rails 4-嵌套路由的friendly_id