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