Estou executando meu aplicativo em um VPS no Ubuntu 12.04 LTS.
E eu tenho um problema com um processo de daemon para um dos meus aplicativos.
Esse processo é chamado de "delayed_job" (se não estiver familiarizado, trata-se apenas de um manipulador de tarefa em segundo plano).
O problema com este processo é que às vezes ele é morto (suponho que seja porque eu tenho uma quantidade limitada de RAM no meu servidor - apenas 1GB).
Mas o principal problema com isso é que não é possível reinicializar novamente após um sinal de falha ou "kill", ao contrário dos processos "unicorn" (que é um servidor de aplicativos Rails), que estão sempre sendo reinicializados, não importa o que aconteça a eles.
E sim, isso é muito importante, porque muitos recursos de aplicativos estão usando tarefas em segundo plano.
A mesma história acontece quando há trabalhos de manutenção no VPS (iniciados pelo proprietário do VPS) e após a reinicialização o processo "delayed_job" não está mais presente no sistema.
Este é o comando que eu corro todas as vezes para inicializar: RAILS_ENV=production script/delayed_job start
É um problema bem conhecido, mas a única solução que encontrei na Internet é este artigo: link sugere usar o recurso "upstart" do Linux com a opção "respawn", que é capaz de reiniciar o processo se ele for morto ou travado.
Mesmo que o artigo esteja um pouco desatualizado, descobri que o Ubuntu 12.04 deve suportar esse recurso e criei um link simbólico no diretório /etc/init
(eu chamei: delayed_job.conf) para o " delayed_job "arquivo que eu coloquei em uma das minhas pastas de aplicativos (app_name / config, para ser exato) - Eu fiz tudo o que este artigo diz.
Meu problema é: quando eu tento iniciar este novo processo ( start delayed_job
) no console eu recebo:
delayed_job start/running, process 6000
Mas, na verdade, nenhum processo "delayed_job" está sendo criado.
E o status ( status delayed_job
) do processo initctl ainda é: delayed_job stop/waiting
Depois de executar kill -9 6000
, recebo -bash: kill: (6000) - No such process
Então, isso significa que nada é executado. Eu tentei rodar várias vezes em diferentes condições - nada, sem sucesso. É simplesmente não funciona.
Existe alguma coisa que eu poderia tentar fazer funcionar, ou é apenas inútil?