Помилка розгортання 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.