Erro de implantação do Heroku H10 (o aplicativo travou)


135

Eu tenho um aplicativo RoR trabalhando no meu computador local, mas quando o envio para heroku, ele trava. O log de erros fornece um erro H10 e diz:

    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=

Editar:

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

Alguém já teve isso antes e sabe o que pode estar causando o problema? Não consigo encontrar uma solução.

Obrigado.


Tem o mesmo erro alguns meses antes. Acabei de iniciar o novo aplicativo HEROKU, e isso ajuda. Parece que você quebrou o dinamômetro na piscina dele.
Rustem

Infelizmente, isso não resolveu meu problema.
bskool

Há algo que você precisa fazer para configurar o New Relic no Heroku, ou talvez no seu aplicativo? (NewRelic é um software de monitoramento de servidor e aplicativo, portanto, é possível que você esteja vendo o NewRelic entrando para dizer "O aplicativo travou"). Além disso, aqui está outra postagem do SO - veja as instruções em uma resposta.
Tom Harrison

Obrigado pela resposta tharrison. Ainda não consigo superar esse problema. Com relação ao link que você postou, gostaria de salientar que a gema Heroku está depreciada e já migrou do SQLite3 para o PostgreSQL.
bskool

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

Respostas:


292

Corri para o mesmo erro acima, o aplicativo estava travando no heroku (rodando bem no dev), mas os logs de erro no heroku não revelavam nenhuma pista. Li outras respostas nesta página e comecei a suar depois de ver "reconstruir o aplicativo". Achei que talvez pudesse entrar no console heroku e olhar em volta. Eu fiz e até o console travou, mas desta vez me disse o porquê. Era uma variável obscura que esqueci de excluir durante uma sessão de solução de problemas, horas antes. Não estou dizendo que você terá o mesmo problema, mas encontrei mais informações ao tentar acessar o console. Espero que isto ajude.

$ heroku run rails console

24
Esta foi uma ótima resposta, me ajudou quando os logs do heroku não tinham detalhes. Obrigado.
Micah

8
Só queria dizer que eu tive esse problema novamente, pesquisei no Google, encontrei essa resposta, vi que eu tinha votado positivamente e ele resolveu meu problema novamente. Obrigado @ user3721026. Se você ver este comentário, por favor upvote a resposta de novo, porque eu não posso: P
mraaroncruz

1
tinha o mesmo suor quando encontrei essa resposta, perfeita!
Craig McGuff

3
Eu tive esse mesmo problema em python, mas tropeçou por aqui. O equivalente a "$ heroku run python manage.py shell" que imediatamente me mostrou o que estava errado.
precisa saber é o seguinte

11
heroku restartme ajudou a identificar meu problema. Minha binpasta estava faltando.
Steve Steve

44

Eu estava tendo o mesmo problema. Logs não estavam me dando nenhuma pista também. Então, reduzi a escala e subi de volta os dynos. Isso resolveu o problema para mim:

heroku ps:scale web=0

Esperou alguns segundos ...

heroku ps:scale web=1

3
AKA "reiniciar" :) Obrigado!
AD

21
heroku restartfoi a solução que funcionou para mim e acho que (nos bastidores) esse é um truque semelhante. A reinicialização será implementada parando todos os dynos e iniciando-os novamente.
Jochem Schulenklopper

1
Isso aconteceu comigo depois de atualizar para a pilha mais recente (heroku-18). Executando isso, funcionou perfeitamente!
robe007

21
$heroku run rails console 

Esta é a melhor opção, pois irá fornecer um erro no seu terminal, que será muito mais detalhado do que o erro 'app crashed' nos seus logs Heroku.


1
Isso não parece ser uma resposta. Apenas uma sugestão de como melhorar a questão. Você deve usar a seção de comentários para esse fim.
Kamiccolo

3
Esta é uma resposta, a correta, na verdade. Mas o mesmo que acima stackoverflow.com/a/24113266/376680
mraaroncruz

1
É a melhor resposta, porque explica o que o comando faz v / s ntimba20 resposta que carece de uma explicação do que faz.
Bartoindahouse 16/05

18
$ heroku restart

me ajudou a colocar meu dinamômetro funcionando novamente. Sou novo no Heroku, mas feliz por saber agora.


14

isso aconteceu comigo quando eu estava ouvindo na porta errada

Mudei meu listen () para "process.env.PORT" para:

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

ao invés de

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

11

Teve o mesmo problema esta noite. Não é um erro muito útil, então tentei executar no console

heroku run rails c

falhou e me deu um erro muito mais útil. Eu tinha me esquecido de excluir uma chamada de método na produção. Depois de corrigir isso, o aplicativo funcionou bem.


Isso fez por mim! Eu estava usando uma versão diferente do Ruby localmente e no Heroku, e isso resultou em um SyntaxError. Os logs não davam muita informação, mas davam rails c.
Matthew White

Para mim, o problema foi que eu criei um Modelo / Tabela chamado Mail. Isso funcionou bem no local, mas causou um conflito de trabalho no Heroku, pois ele pensou que estava tentando usar o ActionMailer para este modelo. Executando o console heroku me deu o erro detalhado que me permitiu identificar a raiz do H10 App Crashed erro
Zack Weiner

Graças isso resolveu meu problema. I finalmente chegar a incompatibilidade verdadeiro erro superclasse e nada relacionado com favicon
Mauro

5

Eu resolvi esse problema pressionando para o Git:

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

então empurre para Heroku:

git push heroku

então rake db: migrate no Heroku:

heroku run rake db:migrate

9
Não vejo como isso faria diferença. Mas feliz que funcionou para você :)
bskool

i renomeado meu aplicativo e teve este problema, correu heroku executar rake db: migrar e funciona :)
Richlewis

2
Esta é apenas porque você tinha algo a migrar para heroku db
Manny Quintanilla

3

Consegui não incluir meu arquivo .gitignore -> que quebra o heroku. #doh

Aqui está um arquivo .gitignore em funcionamento

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

Para criar um arquivo .gitignore, no terminal, navegue até o diretório de aplicativos e use o seguinte comando

touch .gitignore

Em seguida, você pode abri-lo no seu editor de texto e inserir o código acima.


3

No meu caso, eu estava usando variáveis ​​ENV no meu aplicativo, mas não foi definido na configuração heroku.

O console heroku deu o erro adequado:

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

Em seguida, defina a configuração ENV

heroku config:set AWS_ACCESS_KEY_ID='key'

Reinicie o Heroku

heroku restart

funciona!!


2

Eu estava recebendo esse mesmo erro de aplicativo H10 no Heroku. Cliquei em 'reiniciar todos os dynos' na interface heroku e o problema foi resolvido.


1
Eu também tive exatamente o mesmo problema. O console do Rails não mostrou nenhum erro. Não há erros nos logs do aplicativo. Tentei reiniciar pela linha de comando, tentei reduzir para 0 e depois fazer o backup. Nada funcionou. A única coisa que funcionou foi entrar no Heroku e clicar em "reiniciar todos os dynos" no menu suspenso no canto superior direito. Obrigado pela ajuda!
Will Tew

2

Eu tive H10com Heroku e Node devido ao nome errado do arquivo de código principal. Editar package.json:

{

  ...

  "main": "correct_file_name.js",

  ...

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

Ou renomeie o arquivo.


1

Veja se você recebe

bash: bin/rails: No such file or directory

nos logs durante a execução do comando (heroku logs -t), se sim, execute

bundle exec rake rails:update

Não sobrescreva seus arquivos, no final, este comando criará

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

envie esses arquivos para o heroku e pronto.


1

A raiz do problema que eu estava enfrentando era devido a não ter um banco de dados. Para resolver o problema, primeiro exportei meu banco de dados local:

$ 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 

Em seguida, importou-o para o Heroku:

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

As variáveis para substituir nestes exemplos são: mypassword, myuser, mydbe http://site.tld/mydb.dump. Observe que eu tive que carregar o despejo em um servidor temporário.

Resolvendo todos os meus problemas, escrevi um guia rápido sobre como implantar o Enki no Heroku, que pode ser encontrado aqui .


1

Eu recebi o mesmo erro acima de "aplicativo travado" e os logs do aplicativo heroku não mostram muitas informações relacionadas aos motivos de erro da mensagem. Em seguida, reiniciei os dynos no heroku e, em seguida, ele mostrou o erro dizendo chave adicional em um dos arquivos index.js. na minha instalação. O problema foi corrigido depois de removido e reimplementado o aplicativo no heroku.

Espero que isso seja útil para alguém que enfrenta o mesmo problema.


1

Depois de ler toda a lista de respostas, deparei-me com este site: https://status.heroku.com/, que detalha o status / incidentes atuais com o Heroku. É sempre seguro verificar se há incidentes antes de bater com a cabeça na parede. Para mim, foi o relatório de incidente em anexo publicado no link acima mencionado que estava causando o erro.

ATUALIZAÇÃO DO INCIDENTE DO SERVIDOR


1

No meu caso, o que Procfileeu usei estava quebrando tudo. O Heroku procura Procfilee aplica suas configurações ao iniciar o aplicativo - claramente as configurações de desenvolvimento que eu usei não faziam sentido para o servidor prod. Eu tive que mudar o nome Procfile.deve tudo começou a funcionar normalmente.


1

Eu tive o mesmo problema, fiz o seguinte

heroku run rails c

Ele identificou um erro de sintaxe e vírgula ausente nos parâmetros permitidos de um controlador. Como mencionado acima, os logs do Heroku não forneceram informações suficientes para solucionar o problema.

Eu não vi o aplicativo travar a mensagem no Heroku anteriormente.


No meu caso, houve um uninitialized constanterro no Heroku que não estava presente localmente. Embora ainda precise resolver isso, consegui recuperar uma implantação em funcionamento.
Steve Meisner 12/12

1

Se você estiver usando o Node, tente executar o comando serve diretamente no console. No meu caso, estou executando um aplicativo angular, então tentei com:

heroku run npm start

Isso me mostrou o erro exato durante a inicialização do aplicativo.


1

Rastreei meu problema de volta ao servidor Puma, como fez @Ahmed Elkoussy, mas resolvi apenas comentando a seguinte linha no arquivo puma.rb:

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


0

Encontrei o mesmo problema hoje. Eu fiz heroku run rake db:migrateque eu migraram do modelo anterior, e o aplicativo não falha.


0

Seja muito cauteloso ao copiar e colar código. Às vezes, quando você adiciona um bloco a um arquivo, ele é formatado incorretamente e gera um erro.

Eu já tive esse problema e obtive este erro: inesperado tIDENTIFIER, esperando keyword_end


copiando e colando o código sem compreendê-lo é chamado de programação culto à carga e fará com que você muito mais problemas do que um pouco de "formatação"
David Meister

0

Teve o mesmo problema. para mim foi um erro nos filtros before_action (porque o banco de dados vazio) Verifique seus filtros before_action, talvez eles gerem exceções não tratadas.


0

Eu tive esse problema ao tentar executar o Rails em um subdiretório, e não no /. Por exemplo, eu tinha o aplicativo Angular / Node / Gulp sendo executado /cliente um aplicativo Rails /server, mas ambos estavam no mesmo repositório git, para que eu pudesse acompanhar as alterações no front end e back end. Eu recebi esse erro ao tentar implantá-los no Heroku. Para qualquer pessoa que tenha esse problema, aqui está um pacote de compilação personalizado que permitirá executar o Rails em um subdiretório.

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


0

Eu tive o mesmo problema (o mesmo erro no heroku, trabalhando na máquina local) e tentei todas as soluções listadas aqui, incluindo as heroku run rails console que eram executadas sem mensagens de erro. Eu tentei heroku run rake db:migratee heroku run rake db:migrate:resetalgumas vezes. Nada disso resolveu o problema. Ao analisar alguns arquivos que são usados ​​na produção, mas não no ambiente de desenvolvimento, encontrei algum espaço em branco no arquivo puma.rb como o culpado. Espero que isso ajude alguém que tenha o mesmo problema. Alterar isso fez funcionar

  ActiveRecord::Base.establish_connection
  End

para

  ActiveRecord::Base.establish_connection
end

0

Corri para o mesmo problema ao implantar no Heroku (falha do aplicativo). Os logs não indicavam qual poderia ser o problema. O console Heroku exibiu erro de sintaxe no código de um colchete extra. Surpreendentemente, eu não tive um problema nos trilhos locais durante a execução do aplicativo e, portanto, o perdi. Após a correção e o git push para o Heroku, o aplicativo começou a trabalhar no Heroku!


0

Atualizei minhas configurações de app.set ('endereço_ip', process.env.IP || '127.0.0.1' );

para

app.set ('endereço_ip', process.env.IP || '0.0.0.0' );

que eu mudei para hospedagem Openshift


0

Eu tive o mesmo problema quando comecei a usar o Puma no heroku, conforme a página do guia , esse problema foi resolvido quando comentei a linha de porta mostrada abaixo

# port        ENV['PORT']     || 3000

Portanto, desabilitar a linha acima no puma.rb no diretório config resolveu o problema

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

No meu caso, eu estava executando git push heroku masterquando não estou no ramo principal. Eu tive que ir para o master branch primeiro, mesclar o código com o meu outro branch e depois git push.


0

Eu também encontrei o mesmo erro. Adicionando um.gitignore arquivo ao meu projeto resolveu meu problema.

Meu .gitignorearquivo está aqui:

# Node build artifacts
node_modules
npm-debug.log

# Local development
*.env
*.dev
.DS_Store

# Docker
Dockerfile
docker-compose.yml

E eu mudei de listen()função;

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

Eu mudei para;

    const PORT = process.env.PORT || 5000

...

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.