Rails,mongoid,heroku 性能
Posted
技术标签:
【中文标题】Rails,mongoid,heroku 性能【英文标题】:Rails, mongoid, heroku performance 【发布时间】:2014-03-13 21:18:07 【问题描述】:我在 heroku 上使用 rails、mongoid 和 mongohq 来开发我的网站。
但是,我遇到了非常严重的性能问题。
我在每个用户页面上查询,加载所有数据的时间超过2秒 数据不多,只有30首音乐,每首音乐大概有1到3种不同的风格。
有人知道如何提高性能吗?
我已经尝试了很多方法,但仍然无法正常工作,而且 mongo 显示每个单独的查询都非常快。
代码如下:
@musics = [] #get all user downloaded musics
@uploaders = [] #record uploader of each music
@styles = [] #record the styles of each music
@user.mydownloads.each do |download_music|
music = Music.find(download_music) #find the music by id
@musics.insert(0, music)
uploader = music.user #find the uploader
@uploaders.insert(0,uploader)
@styles.insert(0,shortstyle(music.music_styles,10))
#shortstyle is a helper function in application helper to make the stylelooks nicer
end
如果需要所有数据,我该如何提高性能?
非常感谢你们!
【问题讨论】:
【参考方案1】:你的索引是什么?
另外,@user.mydownloads 中有多少项目?
这将导致 N+1 查询,如果 @user.mydownloads 很大(大于 1 或 2 个项目,请参阅 this SO thread),这可能会非常糟糕
【讨论】:
感谢您的帮助!我对每个模型的 id 都有索引。用户下载的项目大约有30个。 我尝试过对音乐样式进行预加载,但 Rails 会说这是多对多引用,因此不允许预加载.....以上是关于Rails,mongoid,heroku 性能的主要内容,如果未能解决你的问题,请参考以下文章
Mongoid 3 + Heroku (MongoHQ) 导致 Moped::Errors::OperationFailure
heroku mongohq 和 mongoid Mongo::ConnectionFailure
rails 4 gem 'mongoid_slug' 无法按 id 搜索