Erreur de déploiement Heroku H10 (application en panne)

135

J'ai une application RoR fonctionnant sur mon ordinateur local, mais lorsque je l'envoie à heroku, elle plante. Le journal des erreurs donne une erreur H10 et dit:

    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=

Éditer:

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

Quelqu'un a-t-il déjà eu ce problème et sait ce qui pourrait causer le problème? Je ne trouve pas de solution.

Merci.

bskool
la source
Avoir la même erreur quelques mois auparavant. Je viens de démarrer une nouvelle application HEROKU, et cela aide. Il semble que vous ayez cassé un dynamomètre dans une piscine dynamométrique.
Rustem
Malheureusement, cela n'a pas résolu mon problème.
bskool
Avez-vous besoin de faire quelque chose pour configurer New Relic sur Heroku, ou peut-être dans votre application? (NewRelic est un logiciel de surveillance des serveurs et des applications, il est donc possible que ce que vous voyez soit que NewRelic intervienne pour dire "l'application a planté"). Aussi, voici un autre article SO - voir les instructions dans une réponse.
Tom Harrison
Merci pour la réponse tharrison. Je n'arrive toujours pas à surmonter ce problème. En ce qui concerne le lien que vous avez publié, j'aimerais souligner que le gem Heroku est déprécié et a déjà migré de SQLite3 vers PostgreSQL.
bskool
Essayez ceci: heroku config: ajoutez BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy

Réponses:

293

J'ai rencontré la même erreur ci-dessus, l'application plantait sur heroku (fonctionnant bien en dev) mais les journaux d'erreurs sur heroku ne révélaient aucun indice. J'ai lu d'autres réponses sur cette page et j'ai transpiré après avoir vu "Reconstruire l'application". J'ai pensé que je pourrais peut-être entrer dans la console heroku et regarder autour de moi. Je l'ai fait et même la console s'est écrasée, mais cette fois, elle m'a dit pourquoi. C'était une variable obscure que j'avais oublié de supprimer lors d'une session de dépannage quelques heures plus tôt. Je ne dis pas que vous rencontrerez le même problème, mais j'ai trouvé plus d'informations lorsque j'ai essayé de passer par la console. J'espère que cela t'aides.

$ heroku run rails console
ntimba20
la source
24
C'était une excellente réponse, qui m'a aidé lorsque les journaux heroku manquaient de détails. Merci.
Micah
8
Je voulais juste dire que j'avais à nouveau ce problème, recherché sur Google, trouvé cette réponse, vu que je l'avais voté à la hausse, et cela a à nouveau résolu mon problème. Merci @ user3721026. Si vous voyez ce commentaire, veuillez à nouveau voter pour la réponse car je ne peux pas: P
mraaroncruz
1
eu la même sueur quand j'ai trouvé cette réponse, parfaite!
Craig McGuff
3
J'ai eu ce même problème en python mais je suis tombé par hasard ici. L'équivalent est "$ heroku run python manage.py shell" qui m'a immédiatement montré ce qui n'allait pas.
dlb8685
12
heroku restartm'a aidé à identifier mon problème. Mon bindossier manquait.
Steve
44

J'avais le même problème. Les journaux ne me donnaient aucun indice non plus. J'ai donc réduit et redimensionné les dynos. Cela a résolu le problème pour moi:

heroku ps:scale web=0

Attendu quelques secondes ...

heroku ps:scale web=1
chasseur
la source
3
AKA "redémarrer" :) Merci!
AD
21
heroku restartétait la solution qui a fonctionné pour moi, et je suppose (dans les coulisses) que c'est une astuce similaire. Le redémarrage sera mis en œuvre en arrêtant tous les dynos et en les redémarrant.
Jochem Schulenklopper
1
Cela m'est arrivé après la mise à niveau vers la dernière pile (heroku-18). Exécuter cela, a parfaitement fonctionné!
robe007
21
$heroku run rails console 

C'est la meilleure option car elle vous donnera une erreur dans votre terminal qui sera beaucoup plus détaillée que l'erreur `` application plantée '' dans vos journaux Heroku.

EricSchulz
la source
1
Cela ne semble pas être une réponse. Juste une suggestion pour améliorer la question. Vous devriez utiliser la section des commentaires à cet effet.
Kamiccolo
3
C'est une réponse, la bonne en fait. Mais la même chose que ci-dessus stackoverflow.com/a/24113266/376680
mraaroncruz
1
C'est la meilleure réponse car elle explique ce que fait la commande v / s ntimba20 qui manque d'explication sur ce qu'elle fait.
bartoindahouse
18
$ heroku restart

m'a aidé à remettre mon dynamomètre en marche. Je suis nouveau à Heroku mais content de le savoir maintenant.

Kyle Kwon
la source
14

cela m'est arrivé quand j'écoutais sur le mauvais port

J'ai changé mon listen () en "process.env.PORT" ainsi:

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

au lieu de

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

J'ai eu le même problème ce soir. Pas une erreur très utile, j'ai donc essayé de courir dans la console

heroku run rails c

il a échoué et m'a donné une erreur beaucoup plus utile. J'avais négligé de supprimer un appel de méthode en production. Une fois que j'ai corrigé cela, l'application a bien fonctionné.

Grégory
la source
Cela l'a fait pour moi! J'utilisais une version différente de Ruby localement et sur Heroku, et cela entraînait un fichier SyntaxError. Les journaux n'ont pas donné beaucoup d'informations, mais l'ont rails cfait.
Matthew White
Pour moi, le problème était que j'ai créé un modèle / table appelé Mail. Cela a bien fonctionné en local, mais a provoqué un conflit de travail sur Heroku car il pensait que j'essayais d'utiliser ActionMailer pour ce modèle. L'exécution de la console heroku m'a donné l'erreur verbeuse qui m'a permis de localiser la racine de l'erreur H10 App Crashed
Zack Weiner
Merci cela a résolu mon problème. J'obtiens enfin la véritable erreur de superclasse et rien de lié à favicon
Mauro
5

J'ai résolu ce problème en poussant vers Git:

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

puis poussez vers Heroku:

git push heroku

puis rake db: migrer sur Heroku:

heroku run rake db:migrate
Frank C Jones
la source
9
Je ne vois pas comment cela ferait une différence. Mais heureux que cela ait fonctionné pour vous :)
bskool
J'ai renommé mon application et j'ai eu ce problème, j'ai exécuté heroku run rake db: migrate and it works :)
Richlewis
2
C'est uniquement parce que vous aviez quelque chose à migrer vers heroku db
Manny Quintanilla
3

J'ai réussi à ne pas inclure mon fichier .gitignore -> qui casse heroku. #doh

Voici un fichier .gitignore fonctionnel

/.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

Pour créer un fichier .gitignore, dans le terminal, accédez au répertoire de vos applications et utilisez la commande suivante

touch .gitignore

Ensuite, vous pouvez l'ouvrir dans votre éditeur de texte et y mettre le code ci-dessus.

Joe Mellin
la source
3

Dans mon cas, j'utilisais des variables ENV dans mon application, mais ce n'était pas défini dans la configuration heroku.

La console heroku a donné une erreur appropriée:

heroku console
`validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

Ensuite, définissez la configuration ENV

heroku config:set AWS_ACCESS_KEY_ID='key'

Redémarrez le Heroku

heroku restart

Ça marche!!

devudilip
la source
2

J'obtenais cette même erreur de plantage de l'application H10 dans Heroku. J'ai cliqué sur «redémarrer tous les dynos» dans l'interface heroku et le problème a été résolu.

tombeau
la source
1
J'ai aussi eu exactement le même problème. La console Rails n'a montré aucune erreur. Aucune erreur dans les journaux de l'application. J'ai essayé de redémarrer via la ligne de commande, essayé de réduire à 0, puis de sauvegarder. Rien n'a fonctionné. La seule chose qui fonctionnait était de se connecter à Heroku et de cliquer sur "redémarrer tous les dynos" dans la liste déroulante en haut à droite. Merci de votre aide!
Will Tew le
2

j'ai eu H10 avec Heroku et Node en raison du mauvais nom du fichier de code principal. Modifier package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Ou renommez le fichier.

Ariel
la source
1

Voyez si vous obtenez

bash: bin/rails: No such file or directory

dans les journaux lors de l'exécution de la commande (heroku logs -t) si oui, exécutez

bundle exec rake rails:update

N'écrasez pas vos fichiers, à la fin cette commande créera

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

poussez ces fichiers vers heroku et vous avez terminé.

Saqib R.
la source
1

La racine du problème auquel je faisais face était due à l'absence de base de données. Pour résoudre le problème, j'ai d'abord exporté ma base de données locale:

$ 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 

Puis importé dans Heroku:

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

Les variables pour remplacer dans ces exemples sont: mypassword, myuser, mydb&http://site.tld/mydb.dump . Notez que j'ai dû télécharger le vidage sur un serveur temporaire.

Pour résoudre tous mes problèmes, j'ai rédigé un guide rapide sur la façon de déployer Enki sur Heroku, que vous pouvez trouver ici .

bskool
la source
1

J'ai eu la même erreur ci-dessus que "l'application a planté" et les journaux de l'application heroku ne montrent pas beaucoup d'informations liées aux raisons du msg d'erreur. Ensuite, j'ai redémarré les dynos dans heroku, puis il a montré l'erreur indiquant une accolade supplémentaire dans l'un des fichiers index.js de ma configuration. Le problème a été résolu une fois qu'il a été supprimé et redéployé l'application sur heroku.

J'espère que cela sera utile à quelqu'un confronté au même problème.

Praveen
la source
1

Après avoir parcouru toute la liste des réponses, je suis tombé sur ce site Web: https://status.heroku.com/ qui détaille l'état actuel / les incidents avec Heroku. Il est toujours prudent de vérifier les incidents avant de se cogner la tête contre le mur. Pour moi, c'est le rapport d'incident ci-joint publié sur le lien mentionné ci-dessus qui a causé l'erreur.

MISE À JOUR D'INCIDENT DU SERVEUR

PallavBakshi
la source
1

Dans mon cas, Procfilej'ai tout cassé. Heroku recherche Procfileet applique ses paramètres lors du lancement de l'application - il est clair que les paramètres de développement que j'ai utilisés n'ont aucun sens pour le serveur de production. J'ai dû le renommer Procfile.devet tout a commencé à fonctionner normalement.

Le Whiz d'Oz
la source
1

J'ai eu le même problème, j'ai fait ce qui suit

heroku run rails c

Il a identifié une erreur de syntaxe et une virgule manquante dans les paramètres autorisés d'un contrôleur. Comme mentionné ci-dessus, les journaux Heroku n'ont pas fourni d'informations suffisantes pour résoudre le problème.

Je n'ai pas vu le message de plantage de l'application sur Heroku auparavant.

Ben Strachan
la source
Dans mon cas, il y avait une uninitialized constanterreur sur Heroku qui n'était pas présente localement. Bien que j'aie encore besoin de résoudre ce problème, j'ai pu récupérer un déploiement fonctionnel.
Steve Meisner
1

Si vous utilisez Node, vous pouvez essayer d'exécuter la commande serve directement dans la console. Dans mon cas, j'exécute une application angulaire, j'ai donc essayé avec:

heroku run npm start

Cela m'a montré l'erreur exacte lors du démarrage de l'application.

Victor Vargas
la source
1

J'ai retracé mon problème sur le serveur Puma comme l'a fait @Ahmed Elkoussy, mais j'ai résolu simplement en commentant la ligne suivante sur le fichier puma.rb:

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

mranderson
la source
0

J'ai rencontré le même problème aujourd'hui. J'ai fait heroku run rake db:migratebien que j'ai migré le modèle avant, et l'application ne plante pas.

Tu H.
la source
0

Soyez très prudent lorsque vous copiez et collez du code. Parfois, lorsque vous ajoutez un bloc dans un fichier, il est mal formaté et génère une erreur.

J'ai déjà eu ce problème et j'ai eu cette erreur: tIDENTIFIER inattendu, attend keyword_end

Matt Perejda
la source
copier et coller du code sans le comprendre s'appelle la programmation culte du fret et vous posera bien plus de problèmes qu'un peu de "formatage"
David Meister
0

Avait le même problème. pour moi, c'était une erreur dans les filtres before_action (car DB vide) Vérifiez vos filtres before_action, peut-être qu'ils lancent des exeptions non résolues.

sphinx96
la source
0

J'ai eu ce problème en essayant d'exécuter Rails dans un sous-répertoire, et non dans /. Par exemple, j'avais une application Angular / Node / Gulp en cours d'exécution /clientet une application Rails en cours d'exécution /server, mais les deux étaient dans le même référentiel git, donc je pouvais suivre les modifications à travers le front-end et le back-end. J'ai eu cette erreur en essayant de les déployer sur Heroku. Pour toute autre personne ayant ce problème, voici un buildpack personnalisé qui permettra d'exécuter Rails dans un sous-répertoire.

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

Aaron Gray
la source
0

J'ai eu le même problème (même erreur sur heroku, travaillant sur une machine locale) et j'ai essayé toutes les solutions énumérées ici, y compris celles heroku run rails console qui fonctionnaient sans messages d'erreur. J'ai essayé heroku run rake db:migrateet heroku run rake db:migrate:resetplusieurs fois. Rien de tout cela n'a résolu le problème. En parcourant certains fichiers utilisés en production mais pas dans l'environnement de développement, j'ai trouvé que des espaces dans le fichier puma.rb étaient le coupable. J'espère que cela aide quelqu'un qui a le même problème. Changer cela l'a fait fonctionner

  ActiveRecord::Base.establish_connection
  End

à

  ActiveRecord::Base.establish_connection
end
Rahul Madhavan
la source
0

J'ai rencontré le même problème lors du déploiement sur Heroku (crash de l'application). Les journaux n'indiquaient pas quel pouvait être le problème. La console Heroku a affiché une erreur de syntaxe dans le code d'un crochet supplémentaire. Étonnamment, je n'ai pas eu de problème sur les rails locaux lors de l'exécution de l'application et je l'ai donc manqué. Après correction et git push vers Heroku, l'application a commencé à fonctionner sur Heroku!

M Donde
la source
0

J'ai mis à jour mes paramètres depuis app.set ('ip_address', process.env.IP || '127.0.0.1' );

à

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

que j'ai changé pour l'hébergement OpenShift

Neville Dabreo
la source
0

J'ai eu le même problème lorsque j'ai commencé à utiliser Puma dans heroku selon leur page de guide , ce problème a été résolu lorsque j'ai commenté la ligne de port ci-dessous

# port        ENV['PORT']     || 3000

Ainsi, la désactivation de la ligne ci-dessus dans le puma.rb dans le répertoire de configuration a résolu le problème

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
Ahmed Elkoussy
la source
0

Dans mon cas, je jouais git push heroku masterquand je ne suis pas sur la branche principale. Je devais d'abord aller dans la branche master, fusionner le code avec mon autre branche puis git push.

GilbertS
la source
0

J'ai également rencontré la même erreur. Ajout d'un.gitignore fichier à mon projet a résolu mon problème.

Mon .gitignoredossier est ici:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

Et j'ai changé de listen()fonction;

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

Je l'ai changé en;

    const PORT = process.env.PORT || 5000

...

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

La solution que j'ai publiée sur Dev et a fonctionné pour la plupart des gens utilisant 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"
}
Uros Randelovic
la source