Помилка розгортання 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 натискає, щоб сказати, що "Пробій стався"). Крім того, ось ще одна публікація ЗО - дивіться інструкції у відповіді.
Том Харрісон

Дякуємо за відповідь tharrison. Я все ще не можу пройти повз цю проблему. Щодо посилання, яке ви розмістили, я хотів би зазначити, що дорогоцінний камінь Heroku знецінений і вже перейшов з SQLite3 до PostgreSQL.
bskool

Спробуйте це: heroku config: додайте BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy

Відповіді:


293

Я зіткнувся з тією ж помилкою вище, додаток розбився на heroku (працює добре в деві), але журнали помилок на heroku не виявляють жодних підказок. Я прочитав інші відповіді на цій сторінці і спалахнув у поті, побачивши "відновити додаток". Я подумав, може, я можу зайти в консоль heroku і озирнутися. Я так і навіть консоль розбився, але цього разу мені сказали, чому. Це була якась незрозуміла змінна, яку я забув видалити під час сеансу усунення несправностей годинами раніше. Я не кажу, що ви зіткнетеся з тією ж проблемою, але я знайшов більше інформації, коли намагався пройти через консоль. Сподіваюся, це допомагає.

$ heroku run rails console

24
Це була чудова відповідь, допомогла мені, коли в журналах heroku бракувало деталей. Дякую.
Міхей

8
Просто хотів сказати, я знову поставив це питання, погуглив, знайшов цю відповідь, побачив, що я його схвалив, і це знову вирішило мою проблему. Дякуємо @ user3721026. Якщо ви побачите цей коментар, будь ласка, підтвердіть відповідь ще раз, оскільки я не можу: P
mraaroncruz

1
був такий же піт, коли я знайшов цю відповідь, ідеальну!
Крейг МакГуфф

3
У мене був цей самий випуск у python, але натомість наткнувся сюди. Еквівалент є "$ heroku run python Manag.py shell", який одразу показав мені, що не так.
dlb8685

11
heroku restartдопомогло мені визначити свою проблему. Моя binпапка відсутня.
Стів

44

У мене виникло те саме питання. Журнали також не давали мені жодних підказок. Тому я зменшив масштаб і повернув назад диноз. Це вирішило для мене проблему:

heroku ps:scale web=0

Зачекали кілька секунд ...

heroku ps:scale web=1

3
AKA "перезапуск" :) Дякую!
AD

21
heroku restartбуло рішення, яке працювало для мене, і я здогадуюсь (за лаштунками) це схожа хитрість. Перезапуск буде здійснено, зупинивши всі диноси та запустивши їх заново.
Йохем Шуленклоппер

1
Це сталося зі мною після оновлення до останнього стека (heroku-18). Виконавши це, працював чудово!
robe007

21
$heroku run rails console 

Це найкращий варіант, оскільки він дасть вам помилку у своєму терміналі, яка буде набагато детальніше, ніж помилка "додаток аварії" у ваших журналах Heroku.


1
Це, здається, не є відповіддю. Просто пропозиція, як посилити питання. Для цього слід використовувати розділ коментарів.
Каміколо

3
Це відповідь, правильна насправді. Але те ж саме, що і вище stackoverflow.com/a/24113266/376680
mraaroncruz

1
Його найкраща відповідь, оскільки він пояснює, що команда виконує v / s ntimba20 відповідь, що не має пояснення того, що вона робить.
bartoindahouse

18
$ heroku restart

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


14

це сталося зі мною, коли я слухав неправильний порт

Я змінив функцію прослуховування () на "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, і в результаті вийшло a SyntaxError. Журнали не давали багато інформації, але так і rails cробили.
Метью Вайт

Для мене проблемою було те, що я створив модель / таблицю під назвою Mail. Це добре працювало на локальному рівні, але спричинило конфлікт із роботою на Heroku, оскільки він вважав, що я намагаюся використовувати ActionMailer для цієї моделі. Запуск консолі heroku дав мені багатослівну помилку, яка дозволила мені точно визначити корінь помилки додатка H10 Пробита помилка
Зак Вайнер

Спасибі це вирішило мою проблему. Я нарешті отримую справжню невідповідність суперкласової помилки і нічого, що стосується фавікону
Мауро

5

Я вирішив цю проблему, натиснувши на Git:

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

потім натисніть на Heroku:

git push heroku

тоді rake db: мігрувати на Heroku:

heroku run rake db:migrate

9
Я не бачу, як це може змінити ситуацію. Але рада, що це працювало для вас :)
bskool

Я перейменував свій додаток і мав цю проблему, запустив heroku run rake db: migrate and it працює :)
Richlewis

2
Це лише тому, що вам було щось перейти на heroku db
Manny Quintanilla

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

консоль 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. Я натиснув "перезапустити всі диноси" в інтерфейсі 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

натисніть ці файли на heroku, і ви закінчите.


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 не показують багато інформації, пов'язаної з причинами повідомлення про помилку. Потім я перезапустив dynos у heroku, а потім він показав помилку, кажучи про додаткову фігурну дужку в одному з файлів index.js моєї установки. Проблема виправлена ​​після її видалення та повторного використання програми на heroku.

Сподіваюся, що це буде корисно для того, хто стикається з тим самим питанням.


1

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

ОНОВЛЕННЯ СЕРВЕРНОГО СКЛАДУ


1

У моєму випадку Procfileя використав, що зламав усе. Heroku шукає Procfileта застосовує його налаштування під час запуску програми - явно налаштування розробників, які я використовував, не мали сенсу для сервера 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, очікуючи, що ключове слово_end


копіювання та вставлення коду, не розуміючи, це називається вантажним культовим програмуванням і викличе у вас набагато більше проблем, ніж трохи "форматування"
Девід Мейстер

0

Була така ж проблема. для мене це було помилкою перед запуском фільтрів (тому що порожній БД) Перевірте свої фільтри перед запуском, можливо, вони кидають необроблені експедиції.


0

У мене була ця проблема при спробі запуску Rails у підкаталозі, а не в /. Наприклад, у мене працював додаток Angular / Node / Gulp /clientта працює програма Rails/server , але вони обидва були в одному і тому ж git repo, тому я міг відслідковувати зміни на передньому та задньому кінці. Я отримав цю помилку при спробі розгорнути їх у 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 відображає синтаксичну помилку в коді додаткової дужки. Дивно, але я не мав проблеми з місцевими рейками під час роботи програми, а значить, пропустив її. Після виправлення та натискання git на 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.