Heroku部署错误H10(应用程序崩溃)

167

我在本地计算机上运行了一个RoR应用程序,但是当我将其发送到Heroku时,它会崩溃。错误日志显示错误H10并显示:

    2012-11-21T15:26:47+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/newrelic_rpm-3.4.2/lib/new_relic/control/instance_methods.rb:95:in `start_agent'
    2012-11-21T15:26:48+00:00 heroku[web.1]: State changed from starting to crashed
    2012-11-21T15:26:48+00:00 heroku[web.1]: Process exited with status 1
    2012-11-21T15:26:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:27:00+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:30:59+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:31:19+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=
    2012-11-21T15:32:08+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=xxx.herokuapp.com fwd= dyno= queue= wait= connect= service= status=503 bytes=

编辑:

2012-11-22T10:00:58+00:00 app[web.1]: 
2012-11-22T10:00:59+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=xxx.herokuapp.com fwd= dyno=web.1 queue=0 wait=0ms connect=1ms service=26ms status=200 bytes=0

有没有人遇到过这个问题,知道可能是什么原因导致的?我找不到解决方案。

谢谢。


几个月前遇到了同样的错误。刚开始使用新的HEROKU应用程序,它很有帮助。看起来你在dyno池中有一个损坏的dyno。 - Rustem
不幸的是,这并没有解决我的问题。 - bskool
尝试这个:heroku config:add BUILDPACK_URL=https://github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx - ChuckJHardy
这真的很烦人。特别是因为增加日志级别以包括错误跟踪非常困难。 - max pleaner
遇到了相同的H10错误。在检查日志后,发现是whitenoise的问题,因此我想出了这个解决方案。也许对其他人也有帮助。 - Jakob
显示剩余2条评论
37个回答

0

我遇到了同样的问题(在Heroku上出现错误,在本地机器上工作),我尝试了这里列出的所有解决方案,包括 heroku run rails console 没有出现错误信息。我尝试了几次 heroku run rake db:migrateheroku run rake db:migrate:reset。但是这些都没有解决问题。在查看一些用于生产环境但不在开发环境中使用的文件时,我发现puma.rb文件中有一些空格是罪魁祸首。希望这能帮助到遇到同样问题的人。 更改这个问题后,它可以正常工作。

  ActiveRecord::Base.establish_connection
  End

  ActiveRecord::Base.establish_connection
end

0

我在从Rails 6升级到Rails 7后遇到了这个问题。这是因为Rails 7使用默认的图像处理器:vips,但我没有准备好我的应用程序来使用vips,所以出现了问题。

由于我想继续像在Rails 6中一样使用:mini_magick,所以我只需要将以下行添加到config/application.rb中,一切都很好:

config.active_storage.variant_processor = :mini_magick

我在这里得到了那个信息。


现在,我是如何找出这个问题的呢?幸运的是,我能够查看最后一次Heroku日志,以确定用户刚刚在生产应用程序上执行了什么操作,我在本地运行了应用程序,并在本地执行了相同的操作,服务器崩溃了,我在服务器日志中看到了涉及vips的问题。

0
在我的情况下,我的应用程序崩溃了,因为我硬编码了端口,而不是使用Heroku动态设置的端口,可以通过process.env.PORT访问。
我曾经使用过这段代码。
app.listen(PORT, () => {
  console.log("App started at port " + PORT);
});

然后我尝试这个

app.listen(process.env.PORT || 3000, function(){
   console.log("Express server listening on port %d in %s mode", 
 this.address().port, app.settings.env);
});

0

当我尝试在子目录中运行Rails而不是在/中时,我遇到了这个问题。例如,我有一个在/client中运行的Angular/Node/Gulp应用程序和一个在/server中运行的Rails应用程序,但它们都在同一个git存储库中,因此我可以跟踪前端和后端的更改。当我尝试将它们部署到Heroku时,我遇到了这个错误。对于其他遇到此问题的人,这里有一个自定义构建包,可以允许在子目录中运行Rails。

https://github.com/aarongray/heroku-buildpack-ruby


0

我在部署到Heroku时遇到了同样的问题(应用程序崩溃)。日志没有显示出问题所在。Heroku控制台显示代码中有一个额外的括号语法错误。令人惊讶的是,在本地运行应用程序时,我没有遇到这个问题,因此错过了它。更正后,通过git push到Heroku,应用程序在Heroku上开始工作了!


0

我更新了我的设置,从

app.set('ip_address', process.env.IP || '127.0.0.1');

app.set('ip_address', process.env.IP || '0.0.0.0');

这是我为了在 Openshift 上进行托管而做出的更改。


0
非常小心复制和粘贴代码。有时候当你将一个代码块添加到文件中时,它的格式可能不正确,会导致错误。
我以前就遇到过这个问题,出现了这个错误:unexpected tIDENTIFIER, expecting keyword_end。

盲目复制粘贴代码而不理解其含义被称为“祭祀式编程”,这将比一点“格式化”带来更多问题。 - David Meister

0
在我的情况下,当我不在主分支上时,我执行了git push heroku master。我必须先进入主分支,将代码与我的其他分支合并,然后再进行git推送。

0

我也遇到了同样的问题。对我来说,这是由于 before_action 过滤器中的错误(因为空数据库)引起的。 检查一下你的 before_action 过滤器,也许它们会抛出未处理的异常。


0

我知道这个问题很旧了。我只是为了防止有人在Rails 3上遇到相同的问题而添加了新的答案。

在我的情况下,当Gemfile中的"thin" gem被意外注释掉时,应用程序在Heroku上开始崩溃。

一旦我重新添加了那个gem,它就又恢复正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接