【发布时间】:2019-03-22 13:29:43
【问题描述】:
我有一个 Ruby on Rails 应用程序,它加载数千个地图标记并使用 Google Maps API 在地图上显示它们。视图中的所有标记都是必需的,因此它们必须由控制器加载并显示。
因此,每次用户加载他们的地图时,我都会分配大量内存,因此当我超过 500MB 内存限制时,Heroku 中经常遇到“R14 - Ruby 中超出内存配额 (MRI)”错误。
我通过使用较少的数据密集型查询优化了我的代码,例如使用:
@user.markers.select(:coordinates)
相对于:
@user.markers
然而,由于我正在加载的对象的原始数量(有时每个用户在地图上超过 2,000 到 3,000 个),我仍在实例化大量内存。由于多个用户提出类似的请求,我很快就完成了500MB 内存。
这是否意味着我只需要为我的 Heroku 实例分配更多内存,或者在这种情况下是否有其他方法可以减少内存使用量?
【问题讨论】:
标签: ruby-on-rails heroku memory