Błąd wdrażania Heroku H10 (awaria aplikacji)

135

Mam aplikację RoR działającą na moim komputerze lokalnym, ale kiedy wysyłam ją do heroku, ulega awarii. Dziennik błędów podaje błąd H10 i mówi:

    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=

Edytować:

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

Czy ktoś miał to wcześniej i wie, co może być przyczyną problemu? Nie mogę znaleźć rozwiązania.

Dzięki.

bskool
źródło
Mają ten sam błąd kilka miesięcy wcześniej. Właśnie uruchomiłem nową aplikację HEROKU i to pomaga. Wygląda na to, że zepsułeś hamownię w basenie.
Rustem
Niestety nie rozwiązało to mojego problemu.
bskool
Czy jest coś, co musisz zrobić, aby skonfigurować New Relic na Heroku, a może w swojej aplikacji? (NewRelic to oprogramowanie do monitorowania serwerów i aplikacji, więc możliwe, że to, co widzisz, to NewRelic włączający się z komunikatem „Awaria aplikacji”). Również tutaj kolejny SO poczta - patrz instrukcje w odpowiedzi.
Tom Harrison,
Dzięki za odpowiedź tharrison. Nadal nie mogę wyjść poza ten problem. Jeśli chodzi o link, który opublikowałeś, chciałbym zwrócić uwagę, że klejnot Heroku jest zdeprecjonowany i został już przeniesiony z SQLite3 do PostgreSQL.
bskool
Spróbuj tego: konfiguracja heroku: dodaj BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy

Odpowiedzi:

293

Napotkałem ten sam błąd powyżej, aplikacja zawieszała się na heroku (działała dobrze w programowaniu), ale dzienniki błędów na heroku nie ujawniały żadnych wskazówek. Przeczytałem inne odpowiedzi na tej stronie i spociłem się po obejrzeniu „przebudowy aplikacji”. Pomyślałem, że może mógłbym wejść do konsoli heroku i się rozejrzeć. Zrobiłem to i nawet konsola się zawiesiła, ale tym razem powiedziała mi, dlaczego. To była jakaś niejasna zmienna, której zapomniałem usunąć podczas sesji rozwiązywania problemów kilka godzin wcześniej. Nie mówię, że napotkasz ten sam problem, ale znalazłem więcej informacji, gdy próbowałem przejść przez konsolę. Mam nadzieję że to pomoże.

$ heroku run rails console
ntimba20
źródło
24
To była świetna odpowiedź, pomogła mi, gdy w dziennikach heroku brakowało szczegółów. Dzięki.
Micah
8
Chciałem tylko powiedzieć, że znowu miałem ten problem, przeszukałem go w Google, znalazłem tę odpowiedź, zobaczyłem, że zagłosowałem za nią, i to znowu rozwiązało mój problem. Dzięki @ user3721026. Jeśli widzisz ten komentarz, zagłosuj ponownie, ponieważ nie mogę: P
mraaroncruz
1
miałem ten sam pot, kiedy znalazłem tę odpowiedź, idealna!
Craig McGuff
3
Miałem ten sam problem w Pythonie, ale zamiast tego natknąłem się tutaj. Odpowiednikiem jest „$ heroku run python manage.py shell”, który natychmiast pokazał mi, co jest nie tak.
dlb8685
11
heroku restartpomogło mi zidentyfikować mój problem. binBrakowało mojego folderu.
Steve,
44

Miałem ten sam problem. Dzienniki też nie dawały mi żadnych wskazówek. Więc zmniejszyłem i przeskalowałem hamownie. To rozwiązało problem dla mnie:

heroku ps:scale web=0

Czekałem kilka sekund ...

heroku ps:scale web=1
myśliwy
źródło
3
AKA „restart” :) Dzięki!
AD
21
heroku restartbyło rozwiązaniem, które zadziałało dla mnie i myślę, że (za kulisami) jest to podobna sztuczka. Ponowne uruchomienie nastąpi poprzez zatrzymanie wszystkich hamowni i uruchomienie ich od nowa.
Jochem Schulenklopper
1
Zdarzyło mi się to po aktualizacji do najnowszego stosu (heroku-18). Uruchomienie tego działało idealnie!
robe007
21
$heroku run rails console 

Jest to najlepsza opcja, ponieważ spowoduje wyświetlenie błędu w terminalu, który będzie znacznie bardziej szczegółowy niż błąd „awaria aplikacji” w dziennikach Heroku.

EricSchulz
źródło
1
To nie wydaje się być odpowiedzią. Tylko sugestia, jak wzmocnić pytanie. W tym celu należy skorzystać z sekcji komentarzy.
Kamiccolo
3
To jest odpowiedź, właściwie właściwa. Ale tak samo jak powyżej stackoverflow.com/a/24113266/376680
mraaroncruz
1
To najlepsza odpowiedź, ponieważ wyjaśnia, co robi polecenie v / s ntimba20 odpowiedź, której brakuje wyjaśnienia, co robi.
bartoindahouse
18
$ heroku restart

pomogło mi ponownie uruchomić moją hamownię. Jestem nowy w Heroku, ale cieszę się, że teraz wiem.

Kyle Kwon
źródło
14

zdarzyło mi się to, gdy nasłuchiwałem na złym porcie

Zmieniłem słuchanie () na „process.env.PORT”, więc:

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

zamiast

http.listen(5000, function(){
  console.log('listening on *:5000');
});
Newshorts
źródło
11

Tego wieczoru miałem ten sam problem. Niezbyt pomocny błąd, więc spróbowałem uruchomić w konsoli

heroku run rails c

nie udało się i dał mi dużo bardziej pomocny błąd. Zaniedbałem usunięcie wywołania metody w środowisku produkcyjnym. Gdy to naprawiłem, aplikacja działała dobrze.

Gregory
źródło
Zrobiło to dla mnie! Używałem innej wersji Ruby lokalnie i na Heroku, w wyniku czego powstał plik SyntaxError. Dzienniki nie podały wielu informacji, ale rails ctak.
Matthew White,
Dla mnie problem polegał na tym, że utworzyłem Model / tabelę o nazwie Mail. To działało dobrze na lokalnym, ale spowodowało konflikt zadań na Heroku, ponieważ myślałem, że próbuję użyć ActionMailer dla tego modelu. Uruchamianie konsoli Heroku dało mi szczegółowy błąd, który pozwolił mi zlokalizować źródło błędu aplikacji H10 Awaria aplikacji
Zack Weiner,
Dzięki temu rozwiązałem mój problem. W końcu otrzymuję prawdziwy błąd niedopasowania superklasy i nic związanego z favicon
Mauro
5

Rozwiązałem ten problem, wciskając do Gita:

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

następnie naciśnij do Heroku:

git push heroku

następnie rake db: migrate on Heroku:

heroku run rake db:migrate
Frank C Jones
źródło
9
Nie rozumiem, jak to miało coś zmienić. Ale cieszę się, że ci się udało :)
bskool
Zmieniłem nazwę mojej aplikacji i miałem ten problem, uruchomiłem heroku uruchom rake db: migrate i działa :)
Richlewis
2
Dzieje się tak tylko dlatego, że miałeś coś do migracji do bazy heroku
Manny Quintanilla
3

Udało mi się nie dołączyć mojego pliku .gitignore -> to psuje heroku. #doh

Oto działający plik .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

Aby utworzyć plik .gitignore, w terminalu przejdź do katalogu aplikacji i użyj następującego polecenia

touch .gitignore

Następnie możesz otworzyć go w swoim edytorze tekstu i umieścić w nim powyższy kod.

Joe Mellin
źródło
3

W moim przypadku używałem zmiennych ENV w mojej aplikacji, ale nie zostały one ustawione w konfiguracji heroku.

Konsola heroku podała poprawny błąd:

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

Następnie ustaw konfigurację ENV

heroku config:set AWS_ACCESS_KEY_ID='key'

Uruchom ponownie Heroku

heroku restart

to działa!!

devudilip
źródło
2

Otrzymałem ten sam błąd powodujący awarię aplikacji H10 w Heroku. Kliknąłem „zrestartuj wszystkie hamownie” w interfejsie heroku i problem został rozwiązany.

grób
źródło
1
Miałem też dokładnie ten sam problem. Konsola Railsów nie wyświetlała żadnych błędów. Brak błędów w logach z aplikacji. Próbowałem zrestartować za pomocą wiersza poleceń, próbowałem zmniejszyć do 0, a następnie wykonać kopię zapasową. Nic nie działało. Jedyną rzeczą, która działała, było zalogowanie się do Heroku i kliknięcie „Uruchom ponownie wszystkie hamownie” w menu w prawym górnym rogu. Dzięki za pomoc!
Will Tew
2

Miałem H10z Heroku i Node z powodu złej nazwy głównego pliku kodu. Edycja package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Lub zmień nazwę pliku.

ariel
źródło
1

Zobacz, czy dostaniesz

bash: bin/rails: No such file or directory

w logach podczas wykonywania polecenia (heroku logs -t), jeśli tak, to uruchom

bundle exec rake rails:update

Nie nadpisuj swoich plików, w końcu to polecenie utworzy

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

prześlij te pliki do heroku i gotowe.

Saqib R.
źródło
1

Problem, z którym się zmagałem, wynikał z braku bazy danych. Aby rozwiązać problem, najpierw wyeksportowałem lokalną bazę danych:

$ 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 

Następnie zaimportowałem go do Heroku:

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

Zmienne do zastąpienia w tych przykładach są: mypassword, myuser, mydbi http://site.tld/mydb.dump. Zauważ, że musiałem przesłać zrzut na tymczasowy serwer.

Rozwiązując wszystkie moje problemy, napisałem krótki przewodnik jak wdrożyć Enki w Heroku, który można znaleźć tutaj .

bskool
źródło
1

Otrzymałem ten sam błąd, co „awaria aplikacji”, a dzienniki aplikacji heroku nie pokazują wielu informacji związanych z przyczynami komunikatu o błędzie. Następnie ponownie uruchomiłem hamownie w heroku, a następnie pokazał błąd z informacją o dodatkowym nawiasie klamrowym w jednym z plików index.js w mojej konfiguracji. Problem został rozwiązany po usunięciu i ponownym wdrożeniu aplikacji na heroku.

Mam nadzieję, że będzie to pomocne dla kogoś, kto ma ten sam problem.

Praveen
źródło
1

Po przejrzeniu całej listy odpowiedzi natknąłem się na tę stronę: https://status.heroku.com/, która szczegółowo opisuje aktualny status / incydenty z Heroku. Zawsze bezpiecznie jest sprawdzić incydenty przed uderzeniem głową w ścianę. Dla mnie to załączony raport z incydentu opublikowany pod wyżej wymienionym linkiem był przyczyną błędu.

AKTUALIZACJA INCYDENTÓW SERWEROWYCH

PallavBakshi
źródło
1

W moim przypadku ten, Procfilektórego użyłem, niszczył wszystko. Heroku wyszukuje Procfilei stosuje swoje ustawienia podczas uruchamiania aplikacji - najwyraźniej ustawienia deweloperskie, których użyłem, nie miały żadnego sensu dla serwera produkcyjnego. Musiałem zmienić jego nazwę na Procfile.devi wszystko zaczęło działać normalnie.

Whiz of Oz
źródło
1

Miałem ten sam problem, zrobiłem co następuje

heroku run rails c

Zidentyfikowano błąd składni i brak przecinka w dopuszczalnych parametrach kontrolera. Jak wspomniano powyżej, dzienniki Heroku nie zawierały wystarczających informacji, aby rozwiązać problem.

Nie widziałem wcześniej komunikatu o awarii aplikacji na Heroku.

Ben Strachan
źródło
W moim przypadku uninitialized constantw Heroku wystąpił błąd, którego nie było lokalnie. Chociaż nadal muszę to rozwiązać, udało mi się odzyskać działające wdrożenie.
Steve Meisner
1

Jeśli używasz Node, możesz spróbować uruchomić polecenie serv bezpośrednio w konsoli. W moim przypadku uruchamiam aplikację kątową, więc próbowałem z:

heroku run npm start

To pokazało mi dokładny błąd podczas uruchamiania aplikacji.

Victor Vargas
źródło
1

Prześledziłem swój problem z powrotem na serwerze Puma, podobnie jak @Ahmed Elkoussy, ale rozwiązałem go, komentując następujący wiersz w pliku puma.rb:

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

mranderson
źródło
0

Dziś napotkałem ten sam problem. Zrobiłem, heroku run rake db:migratechociaż wcześniej migrowałem model i aplikacja nie ulega awarii.

Tu H.
źródło
0

Zachowaj ostrożność podczas kopiowania i wklejania kodu. Czasami po dodaniu bloku do pliku jest on nieprawidłowo sformatowany i spowoduje błąd.

Miałem ten problem już wcześniej i otrzymałem ten błąd: nieoczekiwany tIDENTIFIER, oczekiwanie keyword_end

Matt Perejda
źródło
kopiowanie i wklejanie kodu bez zrozumienia nazywa się to kultowym programowaniem cargo i spowoduje znacznie więcej problemów niż odrobina „formatowania”
David Meister
0

Miałem ten sam problem. dla mnie był to błąd w filtrach przed zachowaniem się (ponieważ pusty DB) Sprawdź swoje filtry przed zachowaniem, może rzucają niezrozumiałe wyjątki.

sphinx96
źródło
0

Miałem ten problem, gdy próbowałem uruchomić Railsy w podkatalogu, a nie w /. Na przykład miałem uruchomioną aplikację Angular / Node / Gulp /clienti aplikację Rails /server, ale obie były w tym samym repozytorium git, więc mogłem śledzić zmiany w interfejsie użytkownika i zapleczu. Otrzymałem ten błąd podczas próby wdrożenia ich w Heroku. Dla każdego, kto ma ten problem, oto niestandardowy pakiet kompilacji, który pozwoli na uruchamianie Railsów w podkatalogu.

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

Aaron Gray
źródło
0

Miałem ten sam problem (ten sam błąd w heroku, praca na komputerze lokalnym) i wypróbowałem wszystkie wymienione tutaj rozwiązania, w tym te, heroku run rails console które działały bez komunikatów o błędach. Próbowałem heroku run rake db:migratei heroku run rake db:migrate:resetkilka razy. Nic z tego nie rozwiązało problemu. Przeglądając niektóre pliki, które są używane w środowisku produkcyjnym, ale nie w środowisku deweloperskim, zauważyłem, że przyczyną jest spacja w pliku puma.rb. Mam nadzieję, że pomoże to komuś, kto ma ten sam problem. Zmiana tego sprawiła, że ​​to zadziałało

  ActiveRecord::Base.establish_connection
  End

do

  ActiveRecord::Base.establish_connection
end
Rahul Madhavan
źródło
0

Napotkałem ten sam problem podczas wdrażania do Heroku (awaria aplikacji). Dzienniki nie wskazywały, jaki może być problem. Konsola Heroku wyświetliła błąd składni w kodzie dodatkowego nawiasu. O dziwo, nie miałem problemu z lokalnymi szynami podczas uruchamiania aplikacji i dlatego go przegapiłem. Po korekcie i git push do Heroku, aplikacja zaczęła działać na Heroku!

M Donde
źródło
0

Zaktualizowałem moje ustawienia z app.set ('ip_address', process.env.IP || '127.0.0.1' );

do

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

które zmieniłem na hosting Openshift

Neville Dabreo
źródło
0

Miałem ten sam problem, kiedy zacząłem używać Pumy w heroku, zgodnie z ich stroną przewodnika , ten problem został rozwiązany, gdy skomentowałem linię portu pokazaną poniżej

# port        ENV['PORT']     || 3000

Tak więc wyłączenie powyższej linii w puma.rb w katalogu konfiguracyjnym rozwiązało problem

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
źródło
0

W moim przypadku grałem, git push heroku mastergdy nie jestem na gałęzi master. Musiałem najpierw przejść do gałęzi głównej, scalić kod z inną gałęzią, a następnie wcisnąć git.

Gilbert S.
źródło
0

Napotkałem również ten sam błąd. Dodawanie.gitignore pliku do mojego projektu rozwiązało mój problem.

Mój .gitignoreplik jest tutaj:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

I zmieniłem listen()funkcję;

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

Zmieniłem to na;

    const PORT = process.env.PORT || 5000

...

    app.listen(PORT, function() {
    console.log("Server running on port 5000...");
    });
shrgrl
źródło
0

Rozwiązanie, które opublikowałem na Dev i pracowałem dla większości osób korzystających z 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
źródło