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


135

我的本地计算机上有一个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 2012年

不幸的是,这不能解决我的问题。
bskool 2012年

在Heroku或您的应用程序中配置New Relic有什么需要做的吗?(NewRelic是服务器和应用程序监视软件,因此您所看到的可能是NewRelic主动说“应用程序已崩溃”)。另外,这是另一篇SO帖子 -请参阅答案中的说明。
汤姆·哈里森

感谢您的答复。我似乎仍然无法解决这个问题。关于您发布的链接,我想指出的是,Heroku gem已过时,并且已经从SQLite3迁移到PostgreSQL。
bskool 2012年

试试这个:heroku config:add BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy 2014年

Answers:


293

我在上面遇到了同样的错误,应用程序在heroku上崩溃(在dev中运行良好),但是在heroku上的错误日志没有揭示任何线索。我在此页面上阅读了其他答案,并在看到“正在重建应用程序”后大汗淋漓。我想也许可以进入heroku控制台并环顾四周。我确实做到了,甚至控制台崩溃了,但是这次它告诉了我为什么。这是一些晦涩的变量,我在故障排除会话的几个小时之前忘记了。我并不是说您会遇到相同的问题,但是当我尝试通过控制台时,我发现了更多信息。希望这可以帮助。

$ heroku run rails console

24
这是一个很好的答案,当heroku日志缺少详细信息时对我有帮助。谢谢。
米卡2014年

8
只是想说,我再次遇到这个问题,用谷歌搜索,找到了这个答案,看到我赞成了它,它又解决了我的问题。感谢@ user3721026。如果您看到此评论,请重新
投票

1
当我找到这个答案时,汗水也一样,完美!
Craig McGuff 2014年

3
我在python中遇到了同样的问题,但是偶然发现了这里。等效的是“ $ heroku run python manage.py shell”,它立即向我显示出了什么问题。
dlb8685

11
heroku restart帮助我确定了我的问题。我的bin文件夹丢失了。
史蒂夫

44

我有同样的问题。日志也没有给我任何线索。所以我按比例缩小,然后按比例放大。这为我解决了问题:

heroku ps:scale web=0

等了几秒钟...

heroku ps:scale web=1

3
又名“重新启动” :)谢谢!
AD

21
heroku restart是对我有用的解决方案,我想(在幕后)这是一个类似的技巧。重新启动将通过停止所有测功并重新启动来实现。
Jochem Schulenklopper

1
升级到最新堆栈(heroku-18)后,这发生在我身上。运行此程序,效果很好!
robe007

21
$heroku run rails console 

这是最好的选择,因为它会在您的终端中给您一个错误,它比您的Heroku日志中的“应用程序崩溃”错误要详细得多。


1
这似乎不是答案。只是建议如何增强这个问题。为此,您应该使用注释部分。
Kamiccolo 2014年

3
这是一个答案,实际上是正确的答案。但与上述stackoverflow.com/a/24113266/376680
mraaroncruz 2014年

1
这是最好的答案,因为它解释了命令的作用,而ntimba20回答却缺少对命令作用的解释。
bartoindahouse


14

当我在错误的端口上收听时,这发生在我身上

我将我的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');
});

11

今天晚上有同样的问题。这不是一个非常有帮助的错误,因此我尝试在控制台中运行

heroku run rails c

它失败了,给了我一个更大的帮助。我忽略了在生产中删除方法调用。一旦我解决了问题,该应用程序就可以正常运行了。


这为我做到了!我在本地和Heroku上使用了不同版本的Ruby,结果是SyntaxError。日志没有提供太多信息,但是提供了很多信息rails c
马修·怀特

对我来说,问题是我创建了一个名为Mail的模型/表。这在本地工作正常,但是在Heroku上引起了作业冲突,因为它认为我正在尝试将ActionMailer用于此模型。运行heroku控制台给了我一个冗长的错误,使我可以查明H10应用程序崩溃错误的根源
Zack Weiner

谢谢,这解决了我的问题。我终于得到真正的错误超类不匹配,并且与favicon没有任何关系
Mauro

5

我通过推送到Git解决了这个问题:

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

然后推送到Heroku:

git push heroku

然后在Heroku上耙db:migrate:

heroku run rake db:migrate

9
我不知道那会有什么不同。但很高兴它为您工作:)
bskool

我重命名了我的应用程序并遇到了这个问题,运行heroku运行rake db:migrate并成功进行了:)
Richlewis

2
这仅仅是因为您有一些东西要迁移到heroku数据库
Manny Quintanilla

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文件,请在终端中导航至您的apps目录并使用以下命令

touch .gitignore

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


3

就我而言,我在应用程序中使用了ENV变量,但未在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

有用!!


2

我在Heroku中遇到了同样的H10应用程序崩溃错误。我在heroku界面中单击“重新启动所有测功机”,问题已解决。


1
我也有完全相同的问题。Rails控制台未显示任何错误。该应用的日志中没有错误。尝试通过命令行重新启动,尝试缩小到0,然后再备份。没事。唯一有效的方法是登录Heroku,然后单击右上角下拉菜单中的“重新启动所有测功机”。谢谢你的帮助!
Tew将

2

H10由于主代码文件名称错误,我在Heroku和Node上工作。编辑package.json

{

  ...

  "main": "correct_file_name.js",

  ...

  "scripts": {
    "start": "node correct_file_name.js"
  }
}

或重命名文件。


1

看你是否得到

bash: bin/rails: No such file or directory

运行时在日志中输入(heroku logs -t)命令,如果是,请运行

bundle exec rake rails:update

不要覆盖您的文件,最后该命令将创建

  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake

将这些文件推送到heroku即可完成。


1

我面临的问题的根源是由于没有数据库。要解决该问题,我首先导出了本地数据库:

$ heroku addons:add heroku-postgresql:dev 
$ heroku addons:add pgbackups
$ PGPASSWORD=mypassword pg_dump -Fc --no-acl --no-owner -h localhost -U myuser mydb > mydb.dump 

然后将其导入到Heroku中:

$ heroku pgbackups:restore DATABASE 'http://site.tld/mydb.dump'

在这些例子中,以取代变量是:mypasswordmyusermydbhttp://site.tld/mydb.dump。请注意,我必须将转储上传到临时服务器。

解决了我所有的问题后,我写了一份有关如何将Enki部署到Heroku的快速指南,可在此处找到


1

我遇到了与“应用程序崩溃”相同的错误,并且heroku应用程序日志未显示太多与错误消息原因相关的信息。然后,我在heroku中重新启动了dynos,然后显示错误,提示在我的设置中的index.js文件之一中附加了花括号。一旦将其删除并在heroku上重新部署该应用程序,该问题便得到解决。

希望这对面临相同问题的人有所帮助。


1

浏览完所有答案后,我偶然发现了该网站:https : //status.heroku.com/,其中详细说明了Heroku的当前状态/事件。将头撞在墙上之前总是很安全的检查出事件。对我而言,正是导致上述错误的附件事件报告发布在上述链接上。

服务器事件更新


1

就我而言,Procfile我曾经破坏了一切。Heroku Procfile在启动应用程序时会寻找并应用其设置-显然,我使用的dev设置对prod服务器没有任何意义。我不得不将其重命名为Procfile.dev,一切开始正常运行。


1

我有同样的问题,我做了以下

heroku run rails c

它识别出语法错误和控制器允许的参数内缺少逗号。如上所述,Heroku日志没有提供足够的信息来解决问题。

我以前没有在Heroku上看到应用程序崩溃的消息。


以我uninitialized constant为例,Heroku上存在一个本地不存在的错误。尽管我仍然需要解决该问题,但我仍然可以撤消正常的部署。
史蒂夫·迈斯纳

1

如果您使用的是Node,则可以尝试直接在控制台中运行serve命令。就我而言,我正在运行一个角度应用程序,所以我尝试了:

heroku run npm start

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


1

我和@Ahmed Elkoussy一样,将问题追溯到Puma服务器,但是我只是通过在puma.rb文件中注释以下行来解决了:

# pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }


0

我今天遇到了同样的问题。我做了heroku run rake db:migrate,虽然我之前迁移模型,以及应用程序不会崩溃。


0

请注意复制和粘贴代码。有时,当您将一个块添加到文件中时,其格式不正确,并且会产生错误。

我之前遇到过此问题,并遇到了以下错误:意外的tIDENTIFIER,期望keyword_end


在不了解代码的情况下复制和粘贴代码被称为“货物崇拜”编程,这将给您带来更多的麻烦,而不仅仅是“格式化”
David Meister

0

有同样的问题。对我来说,这是before_action过滤器中的错误(因为空的DB)检查您的before_action过滤器,也许它们抛出了乱码。


0

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

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


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

部署到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

当我开始按照他们的指南页面在heroku中使用Puma时遇到了相同的问题,当我评论了下面显示的端口行时,此问题已解决

# port        ENV['PORT']     || 3000

因此,在config目录的puma.rb中禁用上述行即可解决此问题

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
# port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'production'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

0

就我而言,git push heroku master当我不在master分支上时,我正在表演。我必须先进入master分支,将代码与其他分支合并,然后进行git push。


0

我也遇到了同样的错误。添加一个.gitignore我的项目文件解决了我的问题。

我的.gitignore文件在这里:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

我改变了listen()功能;

app.listen(5000, function() {
console.log("Server running on port 5000...");
});

我将其更改为;

    const PORT = process.env.PORT || 5000

...

    app.listen(PORT, function() {
    console.log("Server running on port 5000...");
    });

0

我在Dev上发布并为大多数使用React的人工作的解决方案:

https://medium.com/@uros.randelovic/causes-of-heroku-h10-app-crashed-error-and-how-to-solve-them-70495914d2a3?sk=1c51cf95e904f754a43a4b63a06b5503

npm install serve --s
"scripts": {
"dev": "react-scripts start",
"start": "serve -s build",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"heroku-postbuild": "npm run build"
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.