Ошибка развертывания 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

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

Спасибо.

bskool
источник
Имейте ту же ошибку несколько месяцев назад. Только что запустил новое приложение 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
ntimba20
источник
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.

EricSchulz
источник
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');
});
newshorts
источник
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

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

devudilip
источник
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"
  }
}

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

Ariel
источник
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, которое можно найти здесь .

bskool
источник
1

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

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

Praveen
источник
1

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

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

PallavBakshi
источник
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" }

mranderson
источник
0

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

Ту Х.
источник
0

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

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

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

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

sphinx96
источник
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...");
    });
shrgrl
источник
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"
}
Урос Ранделович
источник