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

我在本地电脑上有个 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

以前有人遇到过这种情况吗? 知道是什么导致了这个问题吗? 我找不到解决办法。

谢谢。

213258 次浏览

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

我所面临的问题的根源在于没有数据库。为了解决这个问题,我首先导出了我的本地数据库:

$ 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。注意,我必须将转储上传到一个临时服务器。

为了解决所有的问题,我写了一份关于如何在 Heroku 部署 Enki 的快速指南。

我通过使用 Git 解决了这个问题:

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

然后推向 Heroku:

git push heroku

然后是 rake db: 在 Heroku 上迁移:

heroku run rake db:migrate

我在上面遇到了同样的错误,应用程序在 heroku 上崩溃(在 dev 中运行良好) ,但 heroku 上的错误日志没有显示任何线索。我在这个页面上看到了其他的答案,在看到“重建应用程序”之后,我大汗淋漓我想也许我可以进入 Heroku 的控制台,四处看看。我做到了,甚至控制台崩溃,但这次它告诉我为什么。这是一些模糊的变量,我忘记删除在故障排除会话小时前。我不是说你会遇到同样的问题,但我发现更多的信息时,我试图通过控制台。希望这个能帮上忙。

$ heroku run rails console
$heroku run rails console

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

我设法不包括我的. gitignore 文件-> 破坏 heroku

这里是一个工作。 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

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

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

我以前遇到过这个问题,并得到了这个错误: 意外的 tIDENTIFIER,期望关键字 _ end

看看你能不能

bash: bin/rails: No such file or directory

在日志中运行(heroku log-t)命令,如果是,请运行

bundle exec rake rails:update

不要覆盖您的文件,最终这个命令将创建

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

把这些文件推给 Heroku 你就完事了。

有同样的问题。对我来说,它是错误在 before _ action 过滤器(因为空数据库) 检查 before _ action 过滤器,它们可能会抛出未处理的异常。

当我在错误的端口上听音乐时,这种情况发生在我身上

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

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

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

我遇到了同样的问题(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

我也有同样的问题,日志也没有给我任何线索。 所以我缩小了规模,把动力装置也缩小了,这就解决了我的问题:

heroku ps:scale web=0

等了几秒钟。

heroku ps:scale web=1

我在 Heroku 收到了同样的 h10应用程序崩溃错误。我在 heroku 界面中点击“重新启动所有动力装置”,问题就解决了。

$ heroku restart

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

今天晚上出现了同样的问题,不是一个非常有用的错误,所以我试着在控制台上运行

heroku run rails c

它失败了,给了我一个更有帮助的错误。我忽略了在生产环境中删除一个方法调用。修好之后,应用程序运行良好。

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

我更新了我的设置 Set (‘ ip _ address’,process.env.IP | | ’127.0.0.1’) ;

Set (‘ ip _ address’,process.env.IP | | ’0.0.0.0’) ;

我改成了 Openshift 托管

在我的例子中,我在应用程序中使用了 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

成功了! !

我得到了相同的上述错误作为“应用程序崩溃”和 heroku 应用程序日志没有显示太多信息相关的错误 msg 的原因。然后,我在 heroku 中重新启动 dynos,然后在我的设置中的 index.js 文件中显示了额外的花括号错误。这个问题得到解决,一旦它被删除,并重新部署在 heroku 应用程序。

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

由于主代码文件的名称错误,我与 Heroku 和 Node 使用了 H10。编辑 package.json:

{


...


"main": "correct_file_name.js",


...


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

或者重命名文件。

在浏览了整个答案列表后,我偶然发现了这个网站: https://status.heroku.com/,它详细介绍了 Heroku 目前的状态/事件。在把你的头往墙上撞之前,检查一下是否发生了意外总是安全的。对我来说,这是附件事件报告发表在上述链接,是造成错误。

SERVER INCIDENT UPDATE

在我的情况下,我使用的 Procfile是破坏一切。Heroku 寻找 Procfile,并在启动应用程序时应用它的设置——显然,我使用的开发设置对产品服务器没有任何意义。我不得不把它重命名为 Procfile.dev,一切开始正常工作。

我也有同样的问题,我做了以下几件事

heroku run rails c

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

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

当我开始在 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

如果使用 Node,可以尝试直接在控制台中运行 service 命令。在我的例子中,我运行了一个有棱角的应用程序,所以我尝试了:

heroku run npm start

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

在我的例子中,当我不在主分支上时,我正在执行 git push heroku master。 我必须先去主分支,将代码与我的另一个分支合并,然后推出 Git。

我和@Ahmed Elkoussy 一样,把问题追溯到了 Puma 服务器,但我只需在 Puma.rb 文件中注释下面一行就解决了问题:

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

我也遇到了同样的错误。向我的项目添加 .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...");
});

我在 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"
}

我的服务器端应用程序也有同样的问题。默认情况下,浏览器请求服务器的 Favicon.ico。所以我用了 发球软件包。这是个圈套:

import favicon from "serve-favicon";
server.use(favicon(path.join(__dirname, "../assets/images/favicon.ico")));

我的50美分,我也有这个问题,并解决了:

  • 从构建过程的最初阶段(例如,在提交之后,重新启动动态程序) ,通过 UI 检查日志,看看在崩溃之前会发生什么

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

这个:

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

而不是:

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

解决方案对我有效,尝试运行下面的命令:

Heroku 重启

enter image description here

我知道这个问题很古老。我添加新的答案,以防有人谁有同样的问题,在 Rails 3。

在我的例子中,一旦“瘦”gem 意外地在 Gemfile 上被评论,应用程序就开始在 Heroku 上崩溃。

我又把宝石放回去了。

在 node.js 中,a 也有同样的问题

在项目上删除.env 文件中的 PORT

//app.ts 或 app.js

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

//. env

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

我经历了这个问题后,从轨道6升级到轨道7。这是因为 Rails7使用的是默认的图像处理器 :vips,但我没有准备我的应用程序使用 vips,所以有问题。

因为我想继续使用: mini _ magick,就像我在 Rails6中一样,所以我只需要将这一行添加到 config/application.rb,一切都很好:

config.active_storage.variant_processor = :mini_magick

我得到了信息 给你


我是怎么知道的?谢天谢地,我可以看到最后的 heroku 日志,以了解用户刚刚在生产应用程序上做了什么,我在本地运行应用程序,在本地做同样的事情,服务器崩溃,我看到了一个问题,涉及到 VIP 的服务器日志。

在我的例子中,我的应用程序崩溃是因为我很难设置 PORT,而不是使用 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);
});