升级到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] 删除。
我来说两句