я строю MVPдля клиентов регулярно. Часто я использую Heroku, чтобы они могли увидеть, работает ли продукт, и продемонстрировать его потенциальным клиентам и инвесторам.
Затем у меня есть приложение, развернутое на heroku, и оно прекрасно работает, если бы не одна мелочь. Приложение запускается примерно за 30 секунд, и у heroku есть раздражающая привычка убивать дино, если они не получают трафик. Мой клиент сейчас использует приложение в демонстрационных целях, поэтому нагрузка очень низкая и непостоянная.
Я ищу решение, которое предпочтительно:
Как лучше всего избежать того, чтобы первый запрос занимал 30 секунд?
У Heroku теперь есть надстройка, эквивалентная cron, которая называется Планировщик. На основе учебник:
В app / lib / tasks добавьте файл с именем scheduler.rake
с этой задачей определено:
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
Добавьте надстройку «Планировщик» из панели управления Heroku или из консоли:
heroku addons:add scheduler:standard
Настройте Планировщик для ежечасного выполнения этой задачи.
heroku addons:open scheduler
Я подозреваю, что это предпочтительный метод Heroku, поскольку представитель сообщества Heroku продемонстрировал эту технику во время выступления.
Простой ответ: вы платите за это.
Увеличьте до двух дино, и ваше приложение не будет простаивать.
При разумных затратах можно использовать только до двух веб-серверов на короткие периоды времени для демонстраций вашего клиента. Heroku взимает всего 0,05 доллара в час.
Или направляйте частый трафик в приложение, чтобы оно не простаивало. Но Heroku предлагает такой отличный сервис, которым вы пользуетесь бесплатно, так почему бы не бросить им несколько центов на периоды, когда вам нужен гарантированный ответ.
Вы можете указать проверку Pingdom на URL-адрес вашего сайта. В качестве бонуса вы будете следить за временем простоя, пока делаете это.
Используя Новая реликвия служба мониторинга вроде бы хороший вариант ...
Как в следующем посте:
Это в FAQ, в конце "Что такое дино на холостом ходу?"
https://devcenter.heroku.com/articles/dynos
Приложения, которые имеют более 1 веб-дино, никогда не отключаются. Рабочие стенды никогда не простаивают.
В основном это происходит на бесплатном уровне. Если вы запустите второй динамометрический стенд (т. Е. Заплатите 35 долларов в месяц), он не будет простаивать.
Если это тот случай, когда ваш клиент выполняет презентацию, то есть запланированный просмотр приложения во время встречи, холостой ход не происходит до тех пор, пока не будет проведен час бездействия. Если в этом сценарии он не хочет платить 35 долларов в месяц, он может подтолкнуть приложение перед встречей, чтобы разбудить его.
Есть два варианта:
Заплати за это
Как только ты heroku scale web=
выше 1 приложение никогда не простаивает, поскольку cjk и flurdy также упоминают в своем ответе. Это, безусловно, лучший вариант, если у вас есть единственный сайт, который оплачивает свои счета. Однако если вы обслуживаете много сайтов, затраты увеличиваются.
Периодически пинговать службу
Это интересный вариант. Для сайтов с низким трафиком я не нашел бесплатного решения. Pingdom (как упоминалось ceejayoz) бесплатно для одного сайта, так что это решит проблему один раз. Если вам нужно больше сайтов, вы также можете использовать Iron.io, чтобы ваши героические дино остались в живых. Это также быстро исчерпает бесплатный уровень, и тогда вы будете платить Iron.io.
Если вам посчастливилось иметь уже работающий сервер, вы можете прикрепить локон к своему сайту в crontab. Это решение, конечно, лучше всего масштабируется.
Сделайте так, чтобы ваш сайт, размещенный на Heroku, был проиндексирован Google (и другими крупными поисковыми системами).
Приложение Heroku, которое я загрузил несколько месяцев назад для внутреннего использования, но которое должно быть доступно клиентам, каким-то образом было обнаружено Google и (очень маленький) общедоступный раздел сайта проиндексирован. Тем не менее, спустя несколько месяцев после его первого размещения, Google делает примерно один запрос каждые 70 секунд, что более чем достаточно для постоянной активности дино.