Heroku App启动超时

我有一个相当大的,2.3升级到Rails 3应用程序,这足够胖它没有通过Heroku的60秒启动门,因此它崩溃了。 我已经做了很多工作来最小化Gems和初始化器中的加载时间,但是有一些随机过程是燃烧时间,我不确定它是什么。 我可以用另一双眼睛。

这是带有config.ru,application.rb和environment.rb以及Gemfile的GIST。

https://gist.github.com/2026140

任何想法将不胜感激。

至少在我的情况下,这是由于两件事:1)很多gem,2)Mongo花了很长时间来初始化(负担很重的数据库)。

为了修复gem,在我的本地开发人员上,我修补了Bundler Kernel#require语句,这样我就可以看到哪些是最长的加载。 然后,我试图删除它们。 除此之外,我将它们设置为:require => false并在需要的地方手动需要它们。

其次,我修改了Mongoid,以便在应用程序启动时不会尝试连接到数据库。 这有助于显着降低启动时间(超过10秒)。

Heroku的启动超时也让我感到困惑。 我阅读了几篇关于如何解决这个问题的博客文章,并最终将一些解决方案自动化为gem。

为了减少部署时的启动时间,您可以修剪启动时加载的gem(这并不意味着您必须从应用程序中修剪它们,只需启动时间)。

gem_bench评估启动时可能不需要哪些gem。

我有一个约250个gem的应用程序,并能够添加:require => false到其中约60个,具有戏剧性的效果。

https://github.com/acquaintable/gem_bench

免责声明:我是这个开源ruby gem的作者。 我写了gem来帮助自己解决这个确切的问题:Heroku上的60秒超时。

heroku-forward gem将帮助你击败60s Heroku超时。