Como posso evitar que o heroku pare meu dyno?

6

Eu construo MVP para clientes regularmente. Muitas vezes eu uso o Heroku para que eles possam ver se o produto funciona e demonstrá-lo para prospects e investidores.

Então eu tenho um aplicativo implantado no heroku, e funciona como um encanto, se não por uma coisa pequena. O aplicativo leva cerca de 30 segundos para iniciar e heroku tem o hábito chato de matar dyno's se eles não obtiverem tráfego. Meu cliente está usando o aplicativo para fins de demonstração agora, então a carga é extremamente baixa e intermitente.

Estou procurando uma solução que seja preferencialmente:

  • rentável
  • pode ser aplicado a vários aplicativos simultaneamente

Qual é a melhor maneira de evitar que o primeiro pedido demore 30 segundos?

    
por iwein 28.04.2012 / 13:17

7 respostas

7

O Heroku agora tem um complemento equivalente ao cron chamado Scheduler . Com base no tutorial :

  1. Em app / lib / tasks, adicione um arquivo chamado scheduler.rake com essa tarefa definida:

    desc "This task is called by the Heroku cron add-on"
    task :call_page => :environment do
       uri = URI.parse('http://www.myapp.org/')
       Net::HTTP.get(uri)
    end
    
  2. Adicione o addon "Scheduler" do seu painel de controle Heroku ou do console:

    heroku addons:add scheduler:standard

  3. Configure o Agendador para executar esta tarefa a cada hora.

    heroku addons:open scheduler

Eu suspeito que este é o método preferido de Heroku, como um representante da comunidade Heroku demonstrou esta técnica em uma palestra.

    
por 04.12.2012 / 17:50
3

Resposta simples: você paga por isso.

Aumente para dois dynos e seu aplicativo não ficará inativo.

Se o custo for consciente, apenas aumente dois dynos da web por curtos períodos de tempo em torno dos demos de seu cliente. Heroku cobra apenas US $ 0,05 por hora.

Ou dirija o tráfego freqüente para o aplicativo de alguma forma, para que ele não ocorra. Mas Heroku oferecer um serviço tão grande que você usa de graça, então porque não jogá-los alguns centavos para os períodos que você precisa de resposta garantida.

    
por 30.10.2012 / 15:40
2

Você pode apontar uma verificação Pingdom no URL do seu site. Como bônus, você ficará de olho no tempo de inatividade enquanto faz isso.

    
por 30.10.2012 / 15:48
1

Usar o serviço de monitoramento New Relic parece ser uma boa opção ...

Como no post seguinte:

Evite o Heroku em marcha lenta com pings da New Relic

    
por 28.12.2012 / 11:29
0

Está no FAQ, no final, "O que é dyno inativo?"

link

Apps that have more than 1 web dyno are never idled out. Workers dynos are never idled out.

Basicamente, isso acontece no nível gratuito. Se você iniciar um segundo dinamômetro (ou seja, pagar US $ 35 / mês), os dynos não ficarão ociosos.

Se for o caso em que seu cliente está fazendo uma apresentação, ou seja, uma visualização programada do aplicativo durante uma reunião, o tempo ocioso não ocorre até depois de uma hora de inatividade. Se ele não quiser pagar US $ 35 por mês nesse cenário, ele pode investigar o pedido antes da reunião para reativá-lo.

    
por 28.04.2012 / 13:35
0

Existem duas opções:

  1. Pague por isso

    Assim que você heroku scale web= acima de 1 o aplicativo nunca sairá , como cjk e flurdy também mencionam sua resposta. Esta é de longe a melhor opção se você tiver um único site que esteja pagando suas próprias contas. Se você está mantendo muitos sites, os custos aumentam.

  2. Periodicamente efetue ping no serviço

    Esta opção é interessante. Para locais com tráfego baixo, não há solução livre que eu possa encontrar. Pingdom (como mencionado por ceejayoz) é gratuito para um site, para resolver o problema uma vez. Se você precisar de mais sites, você também pode usar Iron.io para manter seus dynos heroku vivo . Isso também vai ficar rapidamente fora do nível gratuito e, em seguida, você estará pagando Iron.io.

    Se você tiver a sorte de ter um servidor já em execução, poderá colocar uma onda no seu site no crontab. Esta solução é melhor escalonada.

por 05.11.2012 / 06:35
0

Tenha seu site hospedado pelo Heroku indexado pelo Google (e outros mecanismos de pesquisa principais).

Um aplicativo Heroku que enviei há alguns meses para uso interno, mas que precisa ser acessível aos clientes, foi encontrado pelo Google e pela seção pública (muito pequena) do site indexada. No entanto, alguns meses após a primeira apresentação, o Google está fazendo cerca de uma solicitação a cada 70 segundos, mais do que suficiente para manter o dyno ativo continuamente.

    
por 11.01.2013 / 04:51