Ошибка развертывания Heroku H10 (приложение упало)


135

У меня на локальном компьютере работает приложение 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

Кто-нибудь имел это раньше и знает, что может быть причиной проблемы? Я не могу найти решение.

Спасибо.


Имейте ту же ошибку несколько месяцев назад. Только что запустил новое приложение HEROKU, и это помогает. Похоже, вы сломали динамо в динаме.
— Рустем

К сожалению, это не решило мою проблему.
— bskool

Что-нибудь нужно сделать, чтобы настроить New Relic на Heroku или, возможно, в вашем приложении? (NewRelic - это программное обеспечение для мониторинга серверов и приложений, поэтому вполне возможно, что вы видите, что NewRelic говорит: «Приложение рухнуло»). Кроме того, вот еще один пост SO - см. Инструкции в ответе.
— Том Харрисон

Спасибо за ответ Таррисон. Я все еще не могу пройти мимо этой проблемы. Что касается ссылки, которую вы разместили, я хотел бы отметить, что гем Heroku устарел и уже перенесен из SQLite3 в PostgreSQL.
— bskool

Попробуйте это: heroku config: add BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
— ChuckJHardy

Ответы:


293

Я столкнулся с той же ошибкой выше, приложение зависало на heroku (работает нормально в dev), но журналы ошибок на heroku не выявили никаких подсказок. Я прочитал другие ответы на этой странице и вспотел, увидев «перестройку приложения». Я подумал, что, может быть, я смогу сесть в консоль герою и осмотреться. Я сделал, и даже консоль рухнула, но на этот раз он сказал мне, почему. Это была какая-то неясная переменная, которую я забыл удалить во время сеанса устранения неполадок часами ранее. Я не говорю, что вы столкнетесь с той же проблемой, но я нашел больше информации, когда попытался пройти через консоль. Надеюсь это поможет.

$ heroku run rails console

24
Это был отличный ответ, помог мне, когда в логах героку не хватало деталей. Спасибо.
— Мика

8
Просто хотел сказать, что у меня снова возникла эта проблема, гуглил, нашел этот ответ, увидел, что я проголосовал за него, и он снова решил мою проблему. Спасибо @ user3721026. Если вы видите этот комментарий, пожалуйста, подтвердите ответ еще раз, потому что я не могу: P
— mraaroncruz

1
был такой же пот, когда я нашел этот ответ, отлично!
— Крейг МакГафф

3
У меня была такая же проблема в Python, но я наткнулся здесь. Эквивалентом является «$ heroku run python manage.py shell», который сразу же показал мне, что было не так.
— dlb8685

12
heroku restartпомог мне определить мою проблему. Моя binпапка пропала.
— Стив

44

У меня была такая же проблема. Логи не давали мне никаких подсказок. Таким образом, я уменьшил и увеличил обратно динамов. Это решило проблему для меня:

heroku ps:scale web=0

Подождал несколько секунд ...

heroku ps:scale web=1

3
Ака "перезагрузка" :) спасибо!
— AD

21
heroku restartбыло решение, которое работало для меня, и я думаю (за кадром), что это аналогичный трюк. Перезапуск будет осуществляться путем остановки всех динамометров и их повторного запуска.
— Йохем Шуленклоппер

1
Это случилось со мной после обновления до последнего стека (heroku-18). Запуск это работает отлично!
— robe007

21
$heroku run rails console 

Это лучший вариант, поскольку он выдаст вам ошибку в вашем терминале, которая будет гораздо более детальной, чем ошибка «приложение упало» в ваших журналах Heroku.


1
Это не похоже на ответ. Просто предложение, как улучшить вопрос. Вы должны использовать раздел комментариев для этой цели.
— Kamiccolo

3
Это ответ, правильный на самом деле. Но так же, как и выше, stackoverflow.com/a/24113266/376680
— mraaroncruz

1
Это лучший ответ, потому что он объясняет, что команда делает v / s ntimba20 ответ, в котором отсутствует объяснение того, что она делает.
— bartoindahouse

18
$ heroku restart

помог мне снова запустить мой динамо Я новичок в Heroku, но рад, что теперь знаю.


14

это случилось со мной, когда я слушал не на том порту

Я изменил свой 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');
});

11

Была такая же проблема в этот вечер. Не очень полезная ошибка, поэтому я попытался запустить в консоли

heroku run rails c

это не удалось и дал мне гораздо более полезную ошибку. Я пренебрег удалением вызова метода в производстве. Как только я это исправил, приложение работало нормально.


Это сделало это для меня! Я использовал другую версию Ruby локально и на Heroku, и это привело к SyntaxError. Журналы не дали много информации, но rails cсделали.
— Мэтью Уайт

Для меня проблема заключалась в том, что я создал модель / таблицу под названием Mail. Это работало нормально на локальном компьютере, но вызвало конфликт работы на Heroku, так как он думал, что я пытаюсь использовать ActionMailer для этой модели. Запуск консоли heroku дал мне многословную ошибку, которая позволила мне точно определить корень ошибки приложения H10 Crashed
— Зак Вейнер,

Спасибо, это решило мою проблему. Я, наконец, получаю реальное сообщение о несоответствии суперкласса и ничего, связанного с favicon
— Mauro

5

Я решил эту проблему, нажав Git:

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

затем нажмите на Heroku:

git push heroku

тогда грабли дб мигрируют на героку

heroku run rake db:migrate

9
Я не понимаю, как это будет иметь значение. Но рад, что это сработало для вас :)
— bskool

я переименовал свое приложение, и у меня возникла эта проблема, я запустил heroku, запустил rake db: мигрировал и все
— заработало

2
Это только потому, что вам нужно было что-то перенести на heroku db
— Мэнни Кинтанилья

3

Мне удалось не включать мой файл .gitignore -> который ломает героку. #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, в терминале перейдите в каталог ваших приложений и используйте следующую команду

touch .gitignore

Затем вы можете открыть его в текстовом редакторе и вставить в него приведенный выше код.


3

В моем случае я использовал переменные ENV в моем приложении, но это не было установлено в конфиге 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

оно работает!!


2

Я получал эту же ошибку приложения H10 при сбое в Heroku. Я нажал «перезагрузить все dynos» в интерфейсе heroku, и проблема решена.


1
У меня тоже была точно такая же проблема. Консоль Rails не показала никаких ошибок. Нет ошибок в журналах из приложения. Попытался перезапустить через командную строку, попытался уменьшить до 0, а затем вернуться обратно. Ничего не получалось. Единственное, что сработало, - это войти в Heroku и щелкнуть «перезапустить все дино» в выпадающем меню в правом верхнем углу. Спасибо за вашу помощь!
— Будет ли

2

Я имел H10с Heroku и Node из-за неправильного имени основного файла кода. Редактировать package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Или переименуйте файл.


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

подтолкнуть эти файлы к героку и все готово.


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'

Переменные , чтобы заменить в этих примерах , являются: mypassword, myuser, mydb&http://site.tld/mydb.dump . Обратите внимание, что мне пришлось загрузить дамп на временный сервер.

Решая все свои проблемы, я написал краткое руководство по развертыванию Enki в Heroku, которое можно найти здесь .


1

Я получил ту же ошибку выше, что и «приложение упало», и в журналах приложения heroku не отображается много информации, связанной с причинами ошибки msg. Затем я перезапустил dynos в heroku, а затем он показал ошибку, сообщающую дополнительную фигурную скобку в одном из файлов index.js в моей настройке. Проблема была исправлена ​​после того, как приложение было удалено и повторно размещено на герою.

Надеюсь, что это будет полезно для тех, кто сталкивается с той же проблемой.


1

Изучив весь список ответов, я наткнулся на этот веб-сайт: https://status.heroku.com/, в котором подробно описывается текущий статус / инциденты с Heroku. Всегда безопасно проверить наличие инцидентов, прежде чем ударить головой о стену. Для меня это был прикрепленный отчет об инциденте, опубликованный по вышеупомянутой ссылке, который стал причиной ошибки.

ОБНОВЛЕНИЕ ИНЦИДЕНТА СЕРВЕРА


1

В моем случае все, что Procfileя использовал, ломало все. Heroku ищет Procfileи применяет свои настройки при запуске приложения - очевидно, что настройки dev, которые я использовал, не имели никакого смысла для сервера prod. Мне пришлось его переименовать, Procfile.devи все стало работать нормально.


1

У меня была такая же проблема, я сделал следующее

heroku run rails c

Он идентифицировал синтаксическую ошибку и пропущенную запятую в разрешенных параметрах контроллера. Как уже упоминалось выше, журналы Heroku не предоставили достаточной информации для решения проблемы.

Я не видел сообщения о сбое приложения на Heroku ранее.


В моем случае была uninitialized constantошибка на Heroku, которая отсутствовала локально. Хотя мне все еще нужно решить эту проблему, я смог вернуть рабочее развертывание.
— Стив Мейснер

1

Если вы используете Node, вы можете попробовать запустить команду serve прямо в консоли. В моем случае я запускаю угловое приложение, поэтому я попробовал с:

heroku run npm start

Это показало мне точную ошибку при запуске приложения.


1

Я проследил свою проблему до сервера Puma, как и @Ahmed Elkoussy, но решил ее, прокомментировав следующую строку в файле puma.rb:

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


0

Я столкнулся с той же проблемой сегодня. Я сделал, heroku run rake db:migrateхотя я перенес модель раньше, и приложение не падает.


0

Будьте очень осторожны при копировании и вставке кода. Иногда, когда вы добавляете блок в файл, он форматируется неправильно и выдает ошибку.

Я имел эту проблему раньше и получил эту ошибку: неожиданный tIDENTIFIER, ожидая keyword_end


копирование и вставка кода без понимания, это называется программированием грузового культа и вызовет у вас гораздо больше проблем, чем немного «форматирования»
— Дэвид Мейстер

0

Была такая же проблема. для меня это была ошибка в фильтрах before_action (потому что пустая БД). Проверьте ваши фильтры before_action, возможно, они генерируют необязательные исключения.


0

У меня была эта проблема при попытке запустить Rails в подкаталоге, а не в /. Например, у меня было запущено приложение Angular / Node / Gulp и приложение /clientRails/server , но оба они были в одном и том же git-репо, поэтому я мог отслеживать изменения через интерфейс и бэкэнд. Я получил эту ошибку при попытке развернуть их в Heroku. Для всех, у кого есть эта проблема, вот пользовательский пакет сборки, который позволит запускать Rails в подкаталоге.

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


0

У меня была та же проблема (та же ошибка на heroku, работа на локальной машине), и я попробовал все решения, перечисленные здесь, включая те, heroku run rails console которые работали без сообщений об ошибках. Я пробовал heroku run rake db:migrateи heroku run rake db:migrate:resetнесколько раз. Ничто из этого не решило проблему. Проходя через некоторые файлы, которые используются в рабочей среде, но не в среде разработки, я обнаружил, что некоторые пробелы в файле puma.rb являются причиной. Надеюсь, что это помогает кому-то, кто имеет ту же проблему. Изменение этого заставило это работать

  ActiveRecord::Base.establish_connection
  End

в

  ActiveRecord::Base.establish_connection
end

0

Я столкнулся с той же проблемой при развертывании в Heroku (сбой приложения). Логи не указывали, в чем может быть проблема. Консоль Heroku отображала синтаксическую ошибку в коде дополнительной скобки. Удивительно, но у меня не было проблем с локальными рельсами при запуске приложения, и поэтому я пропустил его. После исправления и толчка к Heroku приложение начало работать на Heroku!


0

Я обновил свои настройки из app.set ('ip_address', process.env.IP || '127.0.0.1' );

в

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

который я изменил для хостинга Openshift


0

У меня была та же проблема, когда я начал использовать Puma в heroku, согласно их странице руководства , эта проблема была решена, когда я прокомментировал строку порта, показанную ниже

# port        ENV['PORT']     || 3000

Итак, отключение вышеуказанной строки в файле puma.rb в каталоге config решило проблему

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

0

В моем случае я выступал, git push heroku masterкогда я не на главной ветке. Сначала мне нужно было перейти в главную ветку, объединить код с другой веткой, а затем нажать git.


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...");
    });

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"
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.