Ruby on rails 带Heroku的Rails

Ruby on rails 带Heroku的Rails,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,使用heroku运行rails应用程序,在过去的一个月里,我们遇到了内存配额超过(R14)的问题,几乎没有试图找到根本原因,但没有找到确切的原因?是因为web_并发吗?我们也在使用新的文物 轨道:3.2.22 Ruby:1.9.3 服务器:unicorn,WEB_并发度为5 我们总共使用了20个dynos,并使用process scheduler进行管理 您的整个RoR堆栈已经过时,Heroku现在认可Puma作为其首选服务器,它消耗的内存要少得多(您可以在上查看他们的基准测试) 然而,如果问

使用heroku运行rails应用程序,在过去的一个月里,我们遇到了内存配额超过(R14)的问题,几乎没有试图找到根本原因,但没有找到确切的原因?是因为web_并发吗?我们也在使用新的文物

轨道:3.2.22

Ruby:1.9.3

服务器:unicorn,WEB_并发度为5

我们总共使用了20个dynos,并使用process scheduler进行管理


您的整个RoR堆栈已经过时,Heroku现在认可Puma作为其首选服务器,它消耗的内存要少得多(您可以在上查看他们的基准测试)

然而,如果问题不知从何而来,我宁愿搜索导致这种内存消耗的宝石或代码片段(activeadmin、rmagick等)。此外,一个快速但更昂贵的解决方案将增加您的dyno(Performance-L或Performance-M)
当WEB_并发尝试降低它并检查这是否解决了R14问题时

可能是应用程序内存泄漏。由于您正在使用new relic,请查看他们的日志以查看内存使用情况图表。如果在重新启动dynos后很长一段时间(可能几个小时或一天)后,图表仍显示内存增加(未饱和),则表明内存泄漏。如果是这样的话,那么如果没有完整的源代码,我不知道是否有人可以帮助您。我很难找到这些。如果可能的话,第一个建议是升级到Ruby 2.x。与puma相比,它在垃圾收集方面有了巨大的改进,但我们必须确保我们的代码是线程安全的?您使用的是Rails 3.2.22,因此基本框架至少是线程安全的。对我来说,你只是想让一个传统的rails应用程序“正常工作”。您可以通过添加硬件或改进软件来解决问题。软件一(升级ruby版本、rails框架并使用puma(而不是unicorn)这将大大缓解你的问题。如果你现在没有时间,你最好的办法就是提高你的dyno性能。如果是内存泄漏问题,你会时不时地被R14的事情惹恼。唯一的区别是delta会更高,dyno会更好