Tempos de resposta de inicialização lentos no Heroku?
Você pode ou não estar ciente de que o Heroku tem uma política web
de 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 web
processo, 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_URL
ao 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_ping
tarefa para ser executada uma vez por hora:
$ rake dyno_ping