Heroku-Bereitstellungsfehler H10 (App abgestürzt)

135

Ich habe eine RoR-App auf meinem lokalen Computer, aber wenn ich sie an Heroku sende, stürzt sie ab. Das Fehlerprotokoll gibt einen Fehler H10 aus und sagt:

    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=

Bearbeiten:

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

Hat jemand dies schon einmal gehabt und weiß, was das Problem verursachen könnte? Ich kann keine Lösung finden.

Vielen Dank.

bskool
quelle
Habe den gleichen Fehler einige Monate zuvor. Ich habe gerade eine neue HEROKU-App gestartet und sie hilft. Es sieht nicht so aus, als hätten Sie den Prüfstand im Prüfstandspool gebrochen.
Rustem
Leider konnte mein Problem dadurch nicht behoben werden.
bskool
Müssen Sie etwas tun, um New Relic auf Heroku oder in Ihrer App zu konfigurieren? (NewRelic ist eine Server- und App-Überwachungssoftware. Es ist also möglich, dass NewRelic mit der Meldung "App ist abgestürzt" angezeigt wird.) Auch hier ist eine andere SO Post - die Anweisungen in einer Antwort sehen.
Tom Harrison
Danke für die Antwort. Ich kann immer noch nicht über dieses Problem hinausgehen. In Bezug auf den von Ihnen geposteten Link möchte ich darauf hinweisen, dass das Heroku-Juwel abgewertet ist und bereits von SQLite3 zu PostgreSQL migriert wurde.
bskool
Versuchen Sie dies: heroku config: add BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy

Antworten:

292

Ich bin oben auf den gleichen Fehler gestoßen, die App stürzte auf Heroku ab (läuft in dev einwandfrei), aber die Fehlerprotokolle auf Heroku enthüllten keine Hinweise. Ich habe andere Antworten auf dieser Seite gelesen und war schweißgebadet, nachdem ich "die App neu erstellen" gesehen hatte. Ich dachte, ich könnte vielleicht in die Heroku-Konsole steigen und mich umschauen. Ich habe es getan und sogar die Konsole ist abgestürzt, aber diesmal hat es mir gesagt warum. Es war eine obskure Variable, die ich während einer Sitzung zur Fehlerbehebung Stunden zuvor vergessen hatte zu löschen. Ich sage nicht, dass Sie auf dasselbe Problem stoßen werden, aber ich habe weitere Informationen gefunden, als ich versucht habe, über die Konsole zu gehen. Hoffe das hilft.

$ heroku run rails console
ntimba20
quelle
24
Dies war eine großartige Antwort, die mir geholfen hat, als die Heroku-Protokolle keine Details enthielten. Vielen Dank.
Micah
8
Ich wollte nur sagen, ich hatte dieses Problem wieder, googelte, fand diese Antwort, sah, dass ich es positiv bewertet hatte, und es löste mein Problem erneut. Danke @ user3721026. Wenn Sie diesen Kommentar sehen, stimmen Sie die Antwort bitte erneut ab, da ich nicht kann: P
mraaroncruz
1
hatte den gleichen Schweiß, als ich diese Antwort fand, perfekt!
Craig McGuff
3
Ich hatte das gleiche Problem in Python, bin aber stattdessen hier gestolpert. Das Äquivalent dort ist "$ heroku run python manage.py shell", was mir sofort zeigte, was los war.
dlb8685
11
heroku restarthat mir geholfen, mein Problem zu identifizieren. Mein binOrdner fehlte.
Steve
44

Ich hatte das gleiche Problem. Protokolle gaben mir auch keine Hinweise. Also habe ich die Dynos verkleinert und wieder vergrößert. Dies löste das Problem für mich:

heroku ps:scale web=0

Warte ein paar Sekunden ...

heroku ps:scale web=1
Jäger
quelle
3
AKA "Neustart" :) Danke!
AD
21
heroku restartwar die Lösung, die für mich funktioniert hat, und ich denke (hinter den Kulissen), dass dies ein ähnlicher Trick ist. Der Neustart wird implementiert, indem alle Dynos gestoppt und neu gestartet werden.
Jochem Schulenklopper
1
Dies geschah mir nach dem Upgrade auf den neuesten Stack (Heroku-18). Das zu laufen hat perfekt funktioniert!
Robe007
21
$heroku run rails console 

Dies ist die beste Option, da Sie einen Fehler in Ihrem Terminal erhalten, der viel detaillierter ist als der Fehler "App abgestürzt" in Ihren Heroku-Protokollen.

EricSchulz
quelle
1
Dies scheint keine Antwort zu sein. Nur ein Vorschlag, wie die Frage verbessert werden kann. Sie sollten zu diesem Zweck den Kommentarbereich verwenden.
Kamiccolo
3
Dies ist eine Antwort, die richtige. Aber das gleiche wie oben stackoverflow.com/a/24113266/376680
mraaroncruz
1
Es ist die beste Antwort, weil es erklärt, was der Befehl tut. V / s ntimba20 antwortet, ohne eine Erklärung dessen, was er tut.
Bartoindahouse
18
$ heroku restart

hat mir geholfen, meinen Prüfstand wieder zum Laufen zu bringen. Ich bin neu in Heroku, aber froh, dass ich es jetzt weiß.

Kyle Kwon
quelle
14

Das passierte mir, als ich am falschen Port lauschte

Ich habe mein listen () in "process.env.PORT" geändert, also:

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

anstatt

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

Hatte heute Abend das gleiche Problem. Kein sehr hilfreicher Fehler, daher habe ich versucht, in der Konsole zu laufen

heroku run rails c

es schlug fehl und gab mir einen viel hilfreicheren Fehler. Ich hatte es versäumt, einen Methodenaufruf in der Produktion zu löschen. Nachdem ich das behoben hatte, funktionierte die App einwandfrei.

Gregory
quelle
Das hat es für mich getan! Ich habe lokal und auf Heroku eine andere Version von Ruby verwendet, was zu einer SyntaxError. Protokolle gaben nicht viele Informationen, rails ctaten es aber.
Matthew White
Für mich war das Problem, dass ich ein Modell / eine Tabelle namens Mail erstellt habe. Dies funktionierte gut auf lokaler Ebene, verursachte jedoch einen Jobkonflikt bei Heroku, da ich dachte, ich würde versuchen, ActionMailer für dieses Modell zu verwenden. Das Ausführen der Heroku-Konsole gab mir den ausführlichen Fehler, der es mir ermöglichte, die Wurzel des H10 App Crashed-Fehlers zu lokalisieren
Zack Weiner
Danke, das hat mein Problem gelöst. Ich bekomme endlich die echte Fehler-Superklasse-Nichtübereinstimmung und nichts im Zusammenhang mit Favicon
Mauro
5

Ich habe dieses Problem durch Drücken von Git gelöst:

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

dann drücke zu Heroku:

git push heroku

dann Rechen db: auf Heroku migrieren:

heroku run rake db:migrate
Frank C Jones
quelle
9
Ich sehe nicht ein, wie das einen Unterschied machen würde. Aber froh, dass es für Sie funktioniert hat :)
bskool
Ich habe meine App umbenannt und hatte dieses Problem, lief Heroku Run Rake DB: Migrieren und es funktioniert :)
Richlewis
2
Dies ist nur, weil Sie etwas zu Heroku db migrieren mussten
Manny Quintanilla
3

Ich habe es geschafft, meine .gitignore-Datei nicht einzuschließen -> das bricht Heroku. #doh

Hier ist eine funktionierende Gitignore-Datei

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

Um eine Gitignore-Datei zu erstellen, navigieren Sie im Terminal zu Ihrem Apps-Verzeichnis und verwenden Sie den folgenden Befehl

touch .gitignore

Dann können Sie es in Ihrem Texteditor öffnen und den obigen Code darin einfügen.

Joe Mellin
quelle
3

In meinem Fall habe ich ENV-Variablen in meiner App verwendet, aber es wurde nicht in der Heroku-Konfiguration festgelegt.

Heroku-Konsole gab richtigen Fehler:

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

Stellen Sie dann die ENV-Konfiguration ein

heroku config:set AWS_ACCESS_KEY_ID='key'

Starten Sie das Heroku neu

heroku restart

Es klappt!!

Devudilip
quelle
2

Ich habe die gleiche H10-App in Heroku zum Absturz gebracht. Ich habe in der Heroku-Oberfläche auf "Alle Dynos neu starten" geklickt und das Problem behoben.

Grab
quelle
1
Ich hatte auch genau das gleiche Problem. Die Rails-Konsole zeigte keine Fehler an. Keine Fehler in den Protokollen der App. Versucht, über die Befehlszeile neu zu starten, versucht, auf 0 zu verkleinern und dann wieder zu sichern. Nichts hat geklappt. Das einzige, was funktionierte, war sich bei Heroku anzumelden und in der Dropdown-Liste oben rechts auf "Alle Dynos neu starten" zu klicken. Danke für Ihre Hilfe!
Will Tew
2

Ich hatte H10mit Heroku und Node wegen falschem Namen der Hauptcodedatei. Bearbeiten package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Oder benennen Sie die Datei um.

Ariel
quelle
1

Sehen Sie, wenn Sie bekommen

bash: bin/rails: No such file or directory

in logs während des Ausführens (heroku logs -t) Befehl wenn ja, dann bitte ausführen

bundle exec rake rails:update

Überschreiben Sie Ihre Dateien nicht, am Ende wird dieser Befehl erstellt

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

Schieben Sie diese Dateien zu Heroku und Sie sind fertig.

Saqib R.
quelle
1

Die Ursache des Problems lag darin, dass ich keine Datenbank hatte. Um das Problem zu beheben, habe ich zuerst meine lokale Datenbank exportiert:

$ 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 

Dann importierte es in Heroku:

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

Die Variablen in diesen Beispielen zu ersetzen sind: mypassword, myuser, mydb&http://site.tld/mydb.dump . Beachten Sie, dass ich den Speicherauszug auf einen temporären Server hochladen musste.

Um alle meine Probleme zu lösen, habe ich eine Kurzanleitung zur Bereitstellung von Enki für Heroku verfasst, die Sie hier finden .

bskool
quelle
1

Ich habe den gleichen Fehler wie "App abgestürzt" erhalten und die Heroku-App-Protokolle zeigen nicht viele Informationen zu den Gründen für die Fehlermeldung. Dann habe ich die Dynos in Heroku neu gestartet und dann wurde der Fehler angezeigt, dass in einer der index.js-Dateien in meinem Setup eine zusätzliche geschweifte Klammer angegeben ist. Das Problem wurde behoben, sobald es entfernt und die App auf Heroku erneut bereitgestellt wurde.

Ich hoffe, dies ist hilfreich für jemanden, der mit dem gleichen Problem konfrontiert ist.

Praveen
quelle
1

Nachdem ich die gesamte Liste der Antworten durchgesehen hatte, stieß ich auf diese Website: https://status.heroku.com/, auf der der aktuelle Status / die aktuellen Vorfälle mit Heroku aufgeführt sind. Es ist immer sicher, nach Vorfällen zu suchen, bevor Sie Ihren Kopf gegen die Wand schlagen. Für mich war es der beigefügte Vorfallbericht, der unter dem oben genannten Link veröffentlicht wurde, der den Fehler verursachte.

SERVER INCIDENT UPDATE

PallavBakshi
quelle
1

In meinem Fall hat das Procfile, was ich benutzt habe, alles kaputt gemacht. Heroku sucht Procfileund wendet seine Einstellungen beim Starten der App an - offensichtlich haben die von mir verwendeten Entwicklungseinstellungen für den Produktserver keinen Sinn ergeben. Ich musste es umbenennen Procfile.devund alles begann normal zu funktionieren.

Der Zauber von Oz
quelle
1

Ich hatte das gleiche Problem, ich habe folgendes getan

heroku run rails c

Es wurde ein Syntaxfehler und ein fehlendes Komma innerhalb der vom Controller zugelassenen Parameter identifiziert. Wie oben erwähnt, lieferten die Heroku-Protokolle nicht genügend Informationen, um das Problem zu lösen.

Ich habe noch nie gesehen, dass die Anwendung auf Heroku abgestürzt ist.

Ben Strachan
quelle
In meinem Fall gab es einen uninitialized constantFehler bei Heroku, der lokal nicht vorhanden war. Während ich das noch lösen muss, konnte ich eine funktionierende Bereitstellung wieder herstellen.
Steve Meisner
1

Wenn Sie Node verwenden, können Sie versuchen, den Befehl serve direkt in der Konsole auszuführen. In meinem Fall führe ich eine eckige Anwendung aus, also habe ich versucht mit:

heroku run npm start

Dies zeigte mir den genauen Fehler beim Start der Anwendung.

Victor Vargas
quelle
1

Ich habe mein Problem wie @Ahmed Elkoussy auf den Puma-Server zurückgeführt, aber ich habe es gelöst, indem ich die folgende Zeile in der Datei puma.rb kommentiert habe:

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

mranderson
quelle
0

Ich bin heute auf das gleiche Problem gestoßen. Ich habe heroku run rake db:migratedas Modell zuvor migriert und die App stürzt nicht ab.

Tu H.
quelle
0

Seien Sie beim Kopieren und Einfügen von Code sehr vorsichtig. Wenn Sie einer Datei einen Block hinzufügen, wird dieser manchmal falsch formatiert und führt zu einem Fehler.

Ich hatte dieses Problem schon einmal und habe diesen Fehler erhalten: unerwarteter TIDENTIFIER, der keyword_end erwartet

Matt Perejda
quelle
Das Kopieren und Einfügen von Code ohne Verständnis wird als Frachtkultprogrammierung bezeichnet und verursacht weit mehr Probleme als ein bisschen "Formatieren"
David Meister
0

Hatte das gleiche Problem. Für mich war es ein Fehler in den before_action-Filtern (weil die Datenbank leer ist). Überprüfen Sie Ihre before_action-Filter. Vielleicht werfen sie nicht überarbeitete Ausnahmen.

sphinx96
quelle
0

Ich hatte dieses Problem beim Versuch, Rails in einem Unterverzeichnis und nicht in auszuführen /. Ich hatte zum Beispiel eine Angular / Node / Gulp-App /clientund eine Rails-App/server , aber beide befanden sich im selben Git-Repo, sodass ich Änderungen im Front-End und Back-End verfolgen konnte. Ich habe diesen Fehler erhalten, als ich versucht habe, sie für Heroku bereitzustellen. Für alle anderen, die dieses Problem haben, finden Sie hier ein benutzerdefiniertes Buildpack, mit dem Rails in einem Unterverzeichnis ausgeführt werden können.

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

Aaron Gray
quelle
0

Ich hatte das gleiche Problem (der gleiche Fehler auf Heroku, auf einem lokalen Computer) und habe alle hier aufgeführten Lösungen ausprobiert, einschließlich heroku run rails console der ohne Fehlermeldungen. Ich habe versucht , heroku run rake db:migrateund heroku run rake db:migrate:resetein paar Mal. Nichts davon löste das Problem. Als ich einige Dateien durchgesehen habe, die in der Produktion, aber nicht in der Entwicklungsumgebung verwendet werden, habe ich festgestellt, dass einige Leerzeichen in der Datei puma.rb der Schuldige sind. Hoffe das hilft jemandem, der das gleiche Problem hat. Wenn Sie dies ändern, funktioniert es

  ActiveRecord::Base.establish_connection
  End

zu

  ActiveRecord::Base.establish_connection
end
Rahul Madhavan
quelle
0

Beim Bereitstellen auf Heroku (App-Absturz) bin ich auf dasselbe Problem gestoßen. In den Protokollen wurde nicht angegeben, wo das Problem liegen könnte. Die Heroku-Konsole zeigte einen Syntaxfehler im Code einer zusätzlichen Klammer an. Überraschenderweise hatte ich beim Ausführen der App kein Problem mit lokalen Schienen und habe es daher verpasst. Nach der Korrektur und dem Git-Push an Heroku begann die App mit der Arbeit an Heroku!

M Donde
quelle
0

Ich habe meine Einstellungen von app.set ('ip_address', process.env.IP || '127.0.0.1' ) aktualisiert .

zu

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

was ich für Openshift Hosting geändert habe

Neville Dabreo
quelle
0

Ich hatte das gleiche Problem, als ich anfing, Puma in Heroku gemäß der Leitfadenseite zu verwenden . Dieses Problem wurde behoben, als ich die unten gezeigte Portzeile kommentierte

# port        ENV['PORT']     || 3000

Das Deaktivieren der obigen Zeile in der Datei puma.rb im Konfigurationsverzeichnis hat das Problem behoben

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
quelle
0

In meinem Fall habe ich gespielt, git push heroku masterals ich nicht in der Hauptniederlassung war. Ich musste zuerst zum Hauptzweig gehen, den Code mit meinem anderen Zweig zusammenführen und dann git pushen.

GilbertS
quelle
0

Ich habe auch den gleichen Fehler festgestellt. Hinzufügen von a.gitignore Datei zu meinem Projekt hat mein Problem behoben.

Meine .gitignoreDatei ist hier:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

Und ich habe die listen()Funktion geändert ;

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

Ich habe es geändert in;

    const PORT = process.env.PORT || 5000

...

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