Heroku部署错误H10(App崩溃)

时间:2012-11-21 15:45:49

标签: ruby-on-rails deployment heroku

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

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

感谢。

35 个答案:

答案 0 :(得分:251)

我遇到了同样的错误,应用程序崩溃了heroku(在开发中运行正常)但是heroku上的错误日志没有透露任何线索。我在这个页面上阅读了其他答案,并在看到“重建应用程序”后大汗淋漓。我想也许我可以进入heroku控制台并环顾四周。我做了,甚至控制台崩溃了,但这次它告诉我为什么。这是一个模糊的变量,我忘了在早些时候的故障排除会话中删除。我不是说你会遇到同样的问题,但是当我试图通过控制台时,我发现了更多信息。希望这会有所帮助。

$ heroku run rails console

答案 1 :(得分:37)

我遇到了同样的问题。日志也没有给我任何线索。 所以我按比例缩小并缩小了dynos。这解决了我的问题:

heroku ps:scale web=0

等了几秒......

heroku ps:scale web=1

答案 2 :(得分:18)

$heroku run rails console 

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

答案 3 :(得分:16)

$ heroku restart

帮助我让我的dyno再次运行。我是Heroku的新手,但很高兴我现在知道了。

答案 4 :(得分:11)

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

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

答案 5 :(得分:10)

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

heroku run rails c

它失败了,给了我一个更有帮助的错误。我忽略了删除生产中的方法调用。一旦我解决了这个问题,该应用程序运行良好。

答案 6 :(得分:5)

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

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

然后推送到Heroku:

git push heroku

然后rake db:在Heroku上迁移:

heroku run rake db:migrate

答案 7 :(得分:2)

我设法不包含我的.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

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

答案 8 :(得分:2)

解决方案对我有用,请尝试运行以下命令::

Heroku重新启动

enter image description here

答案 9 :(得分:2)

在我的情况下,我在我的应用程序中使用ENV变量,但它没有在heroku配置中设置。

heroku console给出了正确的错误:

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

它有效!!

答案 10 :(得分:2)

我在Heroku中遇到了同样的H10应用程序崩溃错误。我点击了“重启所有dynos'在heroku界面,问题解决了。

答案 11 :(得分: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'

这些示例中要替换的变量包括:mypasswordmyusermydb& http://site.tld/mydb.dump。请注意,我必须将转储上传到临时服务器。

解决我的所有问题我写了一篇关于如何将Enki部署到Heroku的快速指南,which can be found here

答案 12 :(得分:1)

我遇到了同样的问题,我做了以下

heroku run rails c

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

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

答案 13 :(得分:1)

在浏览完整个答案列表后,我偶然发现了这个网站:https://status.heroku.com/详细说明了Heroku的当前状态/事件。在将头撞在墙上之前检查事故总是安全的。对我来说,正是在上述链接上发布的附加事件报告导致了错误。

SERVER INCIDENT UPDATE

答案 14 :(得分:1)

由于主代码文件的名称错误,我与Heroku和Node有H10。修改package.json

{

  ...

  "main": "correct_file_name.js",

  ...

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

或重命名文件。

答案 15 :(得分:1)

我得到了与上面相同的错误" app崩溃"并且heroku应用程序日志没有显示与错误消息相关的太多信息。然后我重新启动了heroku中的dynos,然后它显示错误,在我的设置中的一个index.js文件中说了额外的花括号。一旦删除并在heroku上重新部署应用程序,问题就解决了。

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

答案 16 :(得分: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,你就完成了。

答案 17 :(得分:0)

我在服务器端应用程序中遇到了同样的问题。默认情况下,浏览器向服务器请求favicon.ico。因此,我使用了serve-favicon软件包。这是设置:

INSERT INTO tm_utm (day, station, east, north, height) VALUES (b'2547', 32394691.312, 5693210.5467, 264.5246), (b'6578', 32362171.6427, 5702679.4317, 217.2954) ...

答案 18 :(得分: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"
}

答案 19 :(得分:0)

我的50美分,我也遇到了这个问题,并通过以下方式解决了

  • 从构建过程开始就通过UI检查日志(例如,提交后重新启动dynos),以查看崩溃之前发生的情况

  • 当链接模块不包含项目的根目录时(我的问题..)

此:

const router = require('./logic/router.js') 

代替:

const router = require('../DMS/logic/router.js') 

答案 20 :(得分:0)

我知道这个问题很老了。我添加新的答案,以防万一有人在Rails 3上遇到相同的问题。

在我的情况下,一旦“稀薄”的宝石在Gemfile上被意外注释,应用程序便开始在Heroku上崩溃。

再次起作用,我又重新添加了该宝石。

答案 21 :(得分:0)

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

答案 22 :(得分: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...");
    });

答案 23 :(得分:0)

在 node.js 中有同样的问题

修复:从项目的 .env 文件中删除 PORT

// app.ts 或 app.js

const PORT = process.env.PORT || '5000';

// .env

PORT=5000 <--- 注释或删除此行

答案 24 :(得分:0)

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

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

heroku run npm start

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

答案 27 :(得分:0)

按照their guide页面在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

答案 28 :(得分:0)

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

答案 29 :(得分:0)

我更新了我的设置 app.set(&#39; ip_address&#39;,process.env.IP || &#39; 127.0.0.1&#39; );

app.set(&#39; ip_address&#39;,process.env.IP || &#39; 0.0.0.0&#39; );

我为Openshift托管改变了

答案 30 :(得分:0)

我在部署到Heroku(应用程序崩溃)时遇到了同样的问题。日志没有说明问题可能是什么。 Heroku控制台在额外括号的代码中显示语法错误。令人惊讶的是,我在运行应用程序时没有在本地轨道上出现问题,因此错过了它。经过修正和git推送到Heroku后,该应用程序开始使用Heroku!

答案 31 :(得分:0)

我遇到了同样的问题(heroku上的错误,在本地机器上工作),我尝试了这里列出的所有解决方案,包括 heroku run rails console 没有错误消息运行。我曾几次尝试heroku run rake db:migrateheroku run rake db:migrate:reset。这些都没有解决问题。在浏览一些在生产中但不在dev环境中使用的文件时,我发现puma.rb文件中有一些空格是罪魁祸首。希望这有助于有同样问题的人。 改变它使它工作

  ActiveRecord::Base.establish_connection
  End

  ActiveRecord::Base.establish_connection
end

答案 32 :(得分:0)

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

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

答案 33 :(得分:0)

有同样的问题。对我来说,在before_action过滤器中是错误的(因为空DB) 检查你的before_action过滤器,也许他们会抛出无关紧要的exeptions。

答案 34 :(得分:0)

对复制和粘贴代码要非常谨慎。有时,当您将一个块添加到文件中时,它的格式不正确并将产生错误。

之前我遇到过此问题并收到此错误:意外的tIDENTIFIER,期待keyword_end