Evite a inatividade do Heroku com pings do New Relic

Tempos de resposta de inicialização lentos no Heroku?

Você pode ou não estar ciente de que o Heroku tem uma política webde inatividade do seu processo após uma hora de inatividade , basicamente desligando o seu site até a próxima solicitação.

Quando um visitante infeliz chega e faz uma solicitação ao seu processo ocioso, ele geralmente está sujeito a um atraso perceptível durante a inicialização.

Se você estiver executando mais de um webprocesso, seu dinamômetro não ficará ocioso, mas se você estiver apenas executando um aplicativo pequeno e de baixo tráfego, isso pode ser uma fonte de aborrecimento significativo.

Uma maneira comum de contornar a política de inatividade do Heroku é configurar um script para enviar um ping uma vez por hora para manter o dinamômetro ativo.

Usando New Relic

Minha preferência é usar o (maravilhoso, excelente) serviço de monitoramento da New Relic , que não só fornecerá relatórios fantásticos sobre a saúde de seu aplicativo, mas também pode ser configurado para executar ping em seu aplicativo com facilidade.

Você pode usar o seguinte para adicionar o plano gratuito da New Relic à sua conta.

$ heroku addons:add newrelic:standard

Abra a interface do New Relic:

$ heroku addons:open newrelic

No Menu , na seção Relatórios , encontre Disponibilidade .

Ao adicionar um URL para monitorar, você pode personalizar a frequência com que a verificação é feita. Defina o tempo para <1 hora e está tudo pronto para começar.

Usando o Scheduler

Alternativamente, se você não gosta ou não deseja usar o New Relic, você pode configurar um dyno ping de keep-alive através do próprio Heroku, usando o Agendador do Heroku .

Por exemplo, se estiver usando Ruby, você pode usar uma tarefa Rake como:

desc "Pings PING_URL to keep a dyno alive"
task
:dyno_ping do
require "net/http"

if ENV['PING_URL']
uri
= URI(ENV['PING_URL'])
Net::HTTP.get_response(uri)
end
end

Adicione PING_URLao seu ambiente Heroku:

$ heroku config:add PING_URL=http://my-app.herokuapp.com

Configure o Scheduler:

$ heroku addons:add scheduler:standard
$ heroku addons
:open scheduler

Esse último comando deve abrir a interface do Scheduler em seu navegador. Agora você pode configurar sua dyno_pingtarefa para ser executada uma vez por hora:

$ rake dyno_ping