Heroku dağıtım hatası H10 (Uygulama çöktü)


135

Yerel bilgisayarımda çalışan bir RoR uygulamam var, ancak heroku'ya gönderdiğimde çöküyor. Hata günlüğü H10 hatası veriyor ve şöyle diyor:

    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=

Düzenle:

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

Daha önce kimse vardı ve soruna neyin neden olabileceğini biliyor mu? Bir çözüm bulamıyorum.

Teşekkürler.


Birkaç ay önce aynı hatayı alın. Yeni HEROKU uygulamasını yeni başlattım ve yardımcı oldu. Ben dyno havuzunda dyno kırılmış gibi görünüyor.
Rustem

Ne yazık ki bu sorunumu çözmedi.
bskool

Heroku'da veya belki de uygulamanızda New Relic'i yapılandırmak için yapmanız gereken bir şey var mı? (NewRelic sunucu ve uygulama izleme yazılımıdır, dolayısıyla gördüğünüz şey NewRelic'in "Uygulama çöktü" demek için devreye girmesi mümkündür). Ayrıca, burada başka bir SO yazısı - bir cevaptaki talimatlara bakın.
Tom Harrison

Cevap için teşekkürler tharrison. Hala bu sorunu aşamıyorum. Gönderdiğiniz bağlantı ile ilgili olarak, Heroku geminin amortismana uğradığını ve SQLite3'ten PostgreSQL'e taşındığını belirtmek isterim.
22ko12

Bunu deneyin: heroku config: add BUILDPACK_URL = github.com/joelcogen/heroku-buildpack-rails-unicorn-nginx
ChuckJHardy

Yanıtlar:


294

Yukarıdaki aynı hatayla karşılaştım, uygulama heroku (dev'de iyi çalışıyor) üzerinde çöküyordu ama heroku'daki hata günlükleri herhangi bir ipucu vermiyordu. Bu sayfadaki diğer yanıtları okudum ve "uygulamayı yeniden oluşturduktan" sonra terlemeye başladım. Belki de heroku konsoluna girip etrafa bakabileceğimi düşündüm. Yaptım ve hatta konsol çöktü, ama bu sefer bana nedenini söyledi. Saatler önce bir sorun giderme oturumu sırasında silmeyi unuttuğum bazı belirsiz değişkenlerdi. Aynı sorunla karşılaşacağınızı söylemiyorum, ancak konsoldan geçmeye çalıştığımda daha fazla bilgi buldum. Bu yardımcı olur umarım.

$ heroku run rails console

24
Bu harika bir cevaptı, heroku günlükleri ayrıntılar olmadığında bana yardımcı oldu. Teşekkürler.
Micah

8
Sadece şunu söylemek istedim, bu sorunu tekrar yaşadım, googled, bu cevabı buldum, iptal ettiğimi gördüm ve sorunumu tekrar çözdü. Teşekkürler @ user3721026. Bu yorumu görüyorsanız lütfen cevabı tekrar oylayın çünkü yapamam: P
mraaroncruz

1
Bu cevabı bulduğumda aynı teri vardı, mükemmel!
Craig McGuff

3
Python'da da aynı sorunu yaşadım ama bunun yerine tökezledim. Eşdeğer orada hemen $ neyin yanlış olduğunu gösterdi "$ heroku run python manage.py kabuk".
dlb8685

12
heroku restartsorunumu belirlememe yardımcı oldu. Klasörüm bineksikti.
Steve

44

Aynı sorunu yaşıyordum. Günlükler de bana ipucu vermiyordu. Bu yüzden dinamikleri küçültüp geri ölçeklendirdim. Bu benim için problemi çözdü:

heroku ps:scale web=0

Birkaç saniye bekledi ...

heroku ps:scale web=1

3
AKA "yeniden başlat" :) Teşekkürler!
AD

21
heroku restartbenim için işe yarayan çözümdü ve sanırım (sahne arkasında) bu da benzer bir numara. Yeniden başlatma, tüm dinamoları durdurarak ve yeniden başlatarak gerçekleştirilecektir.
Jochem Schulenklopper

1
Bu, en son yıla (heroku-18) yükselttikten sonra başıma geldi. Bunu çalıştırmak, mükemmel çalıştı!
robe007

21
$heroku run rails console 

Bu en iyi seçenektir, çünkü terminalinizde Heroku günlüklerinizdeki 'uygulama kilitlendi' hatasından çok daha ayrıntılı bir hata verecektir.


1
Bu bir cevap gibi görünmüyor. Sorunun nasıl geliştirileceğine dair bir öneri. Bu amaçla yorum bölümünü kullanmalısınız.
Kamiccolo

3
Bu bir cevap, doğru olan aslında. Ama yukarıdakiyle aynı stackoverflow.com/a/24113266/376680
mraaroncruz

1
Bu en iyi yanıttır çünkü komutun ne yaptığını açıklar v / s ntimba20 yanıtı ne yaptığını açıklama eksik.
bartoindahouse

18
$ heroku restart

dyno'umu tekrar çalıştırmama yardım etti. Heroku için yeniyim ama şimdi bildiğime sevindim.


14

bu yanlış limanda dinlediğimde başıma geldi

Listen () işlevimi "process.env.PORT" olarak değiştirdim, böylece:

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

onun yerine

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

11

Bu akşam aynı sorun vardı. Çok yararlı bir hata değil, bu yüzden konsolda çalışmayı denedim

heroku run rails c

başarısız oldu ve bana çok daha yardımcı bir hata verdi. Üretimde bir yöntem çağrısını silmeyi ihmal etmiştim. Bunu düzelttikten sonra, uygulama iyi çalıştı.


Bu benim için yaptı! Yerel olarak ve Heroku'da Ruby'nin farklı bir sürümünü kullanıyordum ve bunun sonucunda bir SyntaxError. Günlükler çok fazla bilgi rails cvermedi , ama vermedi.
Matthew White

Benim için sorun, Mail adlı bir Model / Tablo oluşturmamdı. Bu yerelde iyi çalıştı, ancak bu model için ActionMailer'ı kullanmaya çalıştığımı düşündüğü için Heroku'da bir İş çatışmasına neden oldu. Heroku konsolunu çalıştırmak bana H10 App Crashed hatasının kökünü saptamamı sağlayan ayrıntılı hatayı verdi
Zack Weiner

Teşekkürler bu sorunumu çözdü. Sonunda gerçek hata üst sınıf uyumsuzluğu ve favicon ile ilgili hiçbir şey almıyorum
Mauro

5

Git'e basarak bu sorunu çözdüm:

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

sonra Heroku'ya git:

git push heroku

db: Heroku'ya göç edin:

heroku run rake db:migrate

9
Bunun nasıl bir fark yaratacağını anlamıyorum. Ama sevindim senin için çalıştı :)
bskool

benim app yeniden adlandırdı ve bu sorunu vardı, heroku çalıştırmak komisyon db koştu: göç ve işe
yarar

2
Bunun nedeni, heroku db'ye taşınacak bir şeyiniz olması
Manny Quintanilla

3

Heroku'yu bozan .gitignore dosyamı -> eklememeyi başardım. #doh

İşte çalışan bir .gitignore dosyası

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

Bir .gitignore dosyası oluşturmak için terminalde uygulamalar dizininize gidin ve aşağıdaki komutu kullanın

touch .gitignore

Sonra bir metin düzenleyicinizde açabilir ve yukarıdaki kodu içine koyabilirsiniz.


3

Benim durumumda, uygulamamda ENV değişkenleri kullanıyordum, ancak heroku yapılandırmada ayarlanmadı.

heroku konsolu doğru hata verdi:

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

Sonra ENV yapılandırmasını ayarlayın

heroku config:set AWS_ACCESS_KEY_ID='key'

Heroku'yu yeniden başlatın

heroku restart

işe yarıyor!!


2

Aynı H10 uygulaması Heroku'da çöktü hatası alıyordum. Heroku arayüzünde 'tüm dinamikleri yeniden başlat'ı tıkladım ve sorun çözüldü.


1
Ben de aynı problemi yaşadım. Rails konsolu herhangi bir hata göstermedi. Uygulamadan günlüklerde hata yok. Komut satırı üzerinden yeniden başlatmayı denedi, 0'a kadar ölçeklendirmeyi ve ardından yedeklemeyi denedi. Hiçbir şey çalışmadı. Çalışan tek şey Heroku'ya giriş yapmak ve sağ üstteki açılır menüden "tüm dinamoları yeniden başlat" ı tıklamaktı. Yardımınız için teşekkürler!
Will Tew

2

H10Ana kod dosyasının yanlış adı nedeniyle Heroku ve Düğüm ile vardı . Düzenle package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Veya dosyayı yeniden adlandırın.


1

Bakalım

bash: bin/rails: No such file or directory

çalıştırırken günlüklerde (heroku logs -t) komut evet ise lütfen Çalıştır

bundle exec rake rails:update

Dosyalarınızın üzerine yazma, sonunda bu komut oluşturulur

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

Bu dosyaları heroku'ya itin ve işiniz bitti.


1

Karşılaştığım sorunun kökü bir veritabanına sahip olmamasından kaynaklanıyor. Sorunu çözmek için önce yerel veritabanımı dışa aktardım:

$ 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 

Sonra Heroku'ya aktardı:

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

: Bu örneklerde yerine değişkenler mypassword, myuser, mydbve http://site.tld/mydb.dump. Dökümü geçici bir sunucuya yüklemek zorunda olduğumu unutmayın.

Tüm sorunlarımı çözme ben Heroku için Enki dağıtmak için nasıl bir hızlı kılavuzu, yazdım burada bulabilirsiniz .


1

Ben "app çöktü" olarak yukarıdaki hatayı aldım ve heroku uygulama günlükleri hata msg nedenleriyle ilgili çok fazla bilgi göstermiyor. Sonra heroku içinde dinamoları yeniden başlattım ve sonra benim kurulum index.js dosyalarından birinde ek süslü ayraç söyleyerek hatayı gösterdi. Sorun kaldırıldıktan ve uygulamayı heroku üzerinde yeniden kurduktan sonra düzeltildi.

Bu aynı sorunla karşılaşan birine yardımcı olacağını umuyoruz.


1

Tüm cevap listesini inceledikten sonra bu web sitesine rastladım: https://status.heroku.com/ Heroku ile mevcut durumu / olayları detaylandıran. Başınızı duvara vurmadan önce olayları kontrol etmek her zaman güvenlidir. Benim için, hataya neden olan yukarıda belirtilen bağlantıda yayınlanan ekli olay raporuydu.

SUNUCU OLAYI GÜNCELLEME


1

Benim durumumda Procfilekullandığım her şeyi kırmaktı. Heroku Procfile, uygulamayı başlatırken ayarlarını arar ve uygular - açıkça kullandığım geliştirici ayarları prod sunucusu için bir anlam ifade etmiyordu. Yeniden adlandırmak zorunda kaldım Procfile.devve her şey normal çalışmaya başladı.


1

Aynı problemim vardı, aşağıdakileri yaptım

heroku run rails c

Bir sözdizimi hatası saptadı ve denetleyicide izin verilen parametrelerde eksik virgül. Yukarıda belirtildiği gibi, Heroku günlükleri sorunu çözmek için yeterli bilgi vermedi.

Uygulamanın daha önce Heroku'daki mesajını kilitlediğini görmedim.


Benim durumumda, uninitialized constantHeroku'da yerel olarak mevcut olmayan bir hata vardı. Bunu hala çözmem gerekiyor olsa da, çalışan bir dağıtımı geri alabildim.
Steve Meisner

1

Düğüm kullanıyorsanız, sunma komutunu doğrudan konsolda çalıştırmayı deneyebilirsiniz. Benim durumumda açısal bir uygulama çalıştırıyorum, bu yüzden denedim:

heroku run npm start

Bu bana uygulama başlatma sırasında kesin hatayı gösterdi.


1

@Ahmed Elkoussy yaptığı gibi Puma sunucusuna geri sorunumu izledim, ama sadece puma.rb dosyasında aşağıdaki satırı yorumlayarak çözdüm:

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


0

Bugün aynı problemle karşılaştım. heroku run rake db:migrateModeli daha önce geçirmiş olmama rağmen yaptım ve uygulama çökmüyor.


0

Kopyalama ve kod yapıştırma konusunda çok dikkatli olun. Bazen bir dosyaya blok eklediğinizde, blok yanlış biçimlendirilir ve hata verir.

Daha önce bu sorunu yaşadım ve şu hatayı aldım: beklenmeyen tIDENTIFIER, keyword_end bekleniyor


anlamadan kod kopyalama ve yapıştırma kargo kült programlama denir ve size biraz "biçimlendirme" den çok daha fazla sorun neden olacaktır
David Meister

0

Aynı sorun vardı. benim için before_action filtrelerde hataydı (çünkü boş DB) Before_action filtrelerinizi kontrol edin, belki de bilinmeyen istisnalar atarlar.


0

Rails, bir alt dizinde çalıştırmak için çalışırken bu sorun vardı /. Örneğin, Angular / Node / Gulp uygulamasında çalışıyordum /clientve Rails uygulamasında çalışıyordum /server, ancak her ikisi de aynı git deposundaydı, bu yüzden ön uç ve arka uçtaki değişiklikleri takip edebildim. Bu hatayı Heroku'ya dağıtmaya çalışırken aldım. Bu sorunu yaşayan herkes için, bir alt dizinde Rails çalıştırılmasına izin veren özel bir yapı paketi.

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


0

Aynı sorunu yaşadım (heroku üzerinde aynı hata, yerel makinede çalışma) ve burada listelenen tüm çözümleri denedim, heroku run rails console hangileri hata mesajları olmadan çalıştı. Denedim heroku run rake db:migrateve heroku run rake db:migrate:resetbirkaç kez. Bunların hiçbiri sorunu çözmedi. Üretimde kullanılan ancak geliştirme ortamında kullanılmayan bazı dosyalar üzerinden geçerken, puma.rb dosyasındaki bazı boşlukları suçlu olarak buldum. Umarım bu aynı sorunu yaşayan birine yardımcı olur. Bunu değiştirmek işe yaradı

  ActiveRecord::Base.establish_connection
  End

için

  ActiveRecord::Base.establish_connection
end

0

Aynı sorunu Heroku'ya (uygulama çökmesi) dağıtırken de karşılaştım. Günlükler sorunun ne olabileceğini göstermedi. Heroku konsolu fazladan bir parantezin kodunda sözdizimi hatası verdi. Şaşırtıcı bir şekilde, uygulamayı çalıştırırken yerel raylarda bir sorun yoktu ve bu yüzden kaçırdı. Düzeltme ve git Heroku ittikten sonra, uygulama Heroku üzerinde çalışmaya başladı!


0

Ayarlarımı app.set'ten güncelledim ('ip_adresi', process.env.IP || '127.0.0.1' );

için

app.set ('ip_adresi', süreç.env.IP || '0.0.0.0' );

Hangi openshift hosting için değiştirdim


0

Puma'yı heroku'da kılavuz sayfalarına göre kullanmaya başladığımda da aynı sorunu yaşadım, aşağıda gösterilen liman hattına yorum yaptığımda bu sorun çözüldü

# port        ENV['PORT']     || 3000

Böylece, config dizinindeki puma.rb içinde yukarıdaki satırı devre dışı bırakmak sorunu çözdü

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

Benim durumumda git push heroku master, ana dalda değilken performans gösteriyordum . Önce ana şubeye gitmem, kodu diğer şubemle birleştirmem ve sonra gitmem gerekiyordu.


0

Aynı hatayla da karşılaştım. Ekleme.gitignore dosya sorunumu çözdü.

Dosyam .gitignoreburada:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

Ve listen()işlevi değiştirdim ;

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

Bunu şöyle değiştirdim;

    const PORT = process.env.PORT || 5000

...

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.