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个回答

370

我遇到了与以上相同的错误,我的应用在Heroku上崩溃了(在开发中运行良好),但是Heroku上的错误日志没有提供任何线索。我阅读了此页面上的其他答案,在看到“重建应用程序”后汗流浃背。我想也许我可以进入Heroku控制台并查看一下。我尝试了一下,连控制台都崩溃了,但这次它告诉我原因。是我在数小时前的故障排除会话中忘记删除的某个模糊变量。我不是说您会遇到相同的问题,但是当我尝试通过控制台进行操作时,我发现了更多信息。

$ heroku run rails console

30
这是一个很好的答案,当 Heroku 日志缺乏细节时对我有帮助。谢谢。 - Micah
11
我想说,我再次遇到了这个问题,谷歌搜索后找到了这个答案,看到我已经点赞了它,然后再次解决了我的问题。感谢@user3721026。如果你看到这条评论,请再次点赞答案,因为我无法点赞:P - mraaroncruz
7
我在Python中遇到了同样的问题,但是无意间发现了这里。相当于的命令是"$ heroku run python manage.py shell",它立即显示了我的问题所在。 - dlb8685
16
"heroku restart" 帮助我找到了问题所在。我的 "bin" 文件夹不见了。 - Steve
1
@steve的评论heroku restart解决了问题。对我来说,这就是它所需要的。 - Diego Barros
显示剩余7条评论

51
我遇到了同样的问题。日志也没有给我任何线索。所以我把 dynos 规模缩小,然后再放大。这个方法对我来说解决了问题。
heroku ps:scale web=0

等待了几秒钟...

heroku ps:scale web=1

3
重新开始 - A.D.
23
对我来说,"heroku restart" 是解决我的问题的方法,我猜(幕后)这是一个类似的技巧。重新启动将通过停止所有 dynos 并重新启动它们来实现。 - Jochem Schulenklopper
1
在我升级到最新的堆栈(heroku-18)后,这种情况也发生在我身上。运行这个,完美地解决了问题! - robe007

24
$heroku run rails console 

这是最好的选择,因为它会在你的终端中给出一个比Heroku日志中的“应用崩溃”错误更详细的错误信息。


1
这似乎不是一个答案,只是一个建议如何改进问题。您应该使用评论部分来达到此目的。 - Kamiccolo
4
这是一个答案,实际上是正确的答案。但与上面的相同。https://dev59.com/QmYr5IYBdhLWcg3wqr7o#24113266 - mraaroncruz
1
这是最佳答案,因为它解释了命令的作用,而ntimba20的回答缺乏解释。 - bartoindahouse

23
$ heroku restart

帮我重新运行了我的Dyno。我是Heroku的新手,但很高兴现在了解了。


16

当我监听错误的端口时,发生了这件事。

我将我的 listen() 改为 "process.env.PORT",因此:

http.listen((process.env.PORT || 5000), function(){
  console.log('listening on *:5000');
});

而不是

http.listen(5000, function(){
  console.log('listening on *:5000');
});

10

今晚我也遇到了同样的问题。这个错误并没有提供很有帮助的信息,所以我尝试在控制台中运行。

heroku run rails c

它失败了并给了我一个更有帮助的错误。我在生产中忽略了一个方法调用。一旦我修复了这个问题,应用就正常工作了。


这对我有用!我在本地和Heroku上使用了不同版本的Ruby,导致出现“SyntaxError”。日志没有提供太多信息,但是“rails c”提供了帮助。 - Matthew White
对我来说,问题在于我创建了一个名为Mail的Model/Table。这在本地运行良好,但在Heroku上引起了作业冲突,因为它认为我正在尝试为此模型使用ActionMailer。运行heroku控制台给了我详细的错误信息,使我能够确定H10应用程序崩溃错误的根源。 - Zack Weiner
谢谢,这解决了我的问题。我终于得到了真正的错误信息——超类不匹配,与favicon无关。 - Mauro

6

我通过将代码推送到Git来解决了这个问题:

git add .
git commit -am "some text"
git push

然后将其推送到Heroku:

git push heroku

然后在Heroku上运行rake db:migrate:

heroku run rake db:migrate

12
我没看出那会有什么影响。但很高兴它对你有效 :) - bskool
我重命名了我的应用程序,然后遇到了这个问题,运行了 heroku run rake db:migrate 命令,现在它可以正常工作 :) - Richlewis
2
这只是因为你有一些东西要迁移到Heroku数据库。 - James Brown

4
如果你正在使用Node,你可以直接在控制台中尝试运行serve命令。在我的情况下,我正在运行一个Angular应用程序,所以我尝试了以下命令:
heroku run npm start

这显示了应用程序启动期间的确切错误。


3
在我的情况下,我在我的应用程序中使用了环境变量,但是在heroku配置中没有设置它。
heroku控制台给出了正确的错误提示:
heroku console
`validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

然后设置 ENV 配置。
heroku config:set AWS_ACCESS_KEY_ID='key'

重新启动Heroku
heroku restart

它有效了!


3

我忘记添加.gitignore文件 -> 这样会导致heroku出现问题。#doh

这是一个有效的.gitignore文件。

/.bundle
/vendor/bundle/
/vendor/ruby/


db/*.sqlite3
/db/*.sqlite3-journal
/log/*
/tmp/*


**.war
*.rbc
*.sassc
.redcar/
.sass-cache
/config/config.yml
/config/database.yml
/coverage.data
/coverage/
/db/*.javadb/
/db/*.sqlite3
/doc/api/
/doc/app/
/doc/features.html
/doc/specs.html
/public/cache
/public/stylesheets/compiled
/public/system/*
/spec/tmp/*
/cache
/capybara*
/capybara-*.html
/gems
/specifications
rerun.txt
pickle-email-*.html
.zeus.sock

**.orig

.DS_Store

/nbproject/

.idea

/*.tmproj

**.swp

.env
.powenv

要创建一个 .gitignore 文件,可以在终端中导航到您的应用程序目录并使用以下命令。
touch .gitignore

然后,您可以在文本编辑器中打开它,并将上述代码放入其中。

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