Простой способ предотвратить Heroku на холостом ходу? - PullRequest
273 голосов
/ 30 марта 2011

В бесплатных приложениях Heroku динамометры, похоже, продолжают бездействовать - в моем приложении очень низкий трафик, но в моем случае также не совсем приемлемо, что мои пользователи должны ждать 20 с лишним секунд, чтобы раскрутить новый динамо.

Честно говоря, с таким ожиданием многие уйдут до того, как появится первая страница.

Итак, у меня есть проблема: должен ли я платить 36 долларов в месяц, чтобы сэкономить каждому пользователю смущающие долгие 20 секунд, когда мой трафик составляет однозначные цифры в день.

Есть ли способ обойти это ??

Ответы [ 16 ]

345 голосов
/ 30 марта 2011

Вы можете установить бесплатное Новое дополнение Relic . Он имеет функцию контроля доступности, которая будет пинговать ваш сайт два раза в минуту, предотвращая тем самым работу динамометрического стенда.

Более или менее то же решение, что и у Джесси, но, возможно, более интегрированное в Heroku ... И с несколькими привилегиями (мониторинг производительности просто великолепен).

Availability monitoring

Примечание: для всех, кто говорит, что это не работает: важная часть в моем ответе - «монитор доступности». Просто установка аддона не поможет. Вам также необходимо настроить мониторинг доступности с помощью URL вашего приложения heroku.

89 голосов
/ 10 марта 2013

В качестве альтернативы Pingdom я предлагаю попробовать Uptimerobot .Это бесплатно и предлагает проверку сайта с интервалом 5 минутЭто работает очень хорошо для меня.

ОБНОВЛЕНИЕ 7 мая 2015: Это больше не будет возможно, так как Heroku изменит свое свободное динамо , чтобы предотвратить его сохранениеживы в течение полных 24 часов:

Еще одно важное изменение связано со сном динамо или «холостой ход».Хотя неоплачиваемые приложения всегда спали после истечения времени ожидания активности, некоторые приложения использовали службы автоматического пинга для предотвращения такого поведения.бесплатные динамо разрешены 18 часов без сна в течение 24 часов, и в течение следующих нескольких недель мы начнем уведомлять пользователей о приложениях, которые превышают этот лимит.С введением хобби dyno (7 долларов в месяц) мы просим либо дать вашему приложению спать по истечении времени ожидания, либо перейти на эту новую опцию.

Когда это будет доступно?Согласно их сообщению в блоге:

Приложения, работающие с одним 1X динамо, не накапливающим никаких других сборов за динамо, будут постепенно мигрировать на новые бесплатные динамо, начиная с 1 июля .

74 голосов
/ 21 июня 2012

По моему мнению, использование «бесплатного» уровня сервиса не должно приводить в действие производственное или клиентское приложение.Хотя вышеприведенные решения работают против холостого хода Dyno, тщательно продумайте, что вы делаете.

Если ничего другого, используйте задание cron для проверки связи с сайтом и отключите проверку для известных периодов малой нагрузки (т. Е., в одночасье), чтобы Heroku не отказался от бесплатного уровня для всех остальных.

56 голосов
/ 17 апреля 2014

Вы также можете попробовать http://kaffeine.herokuapp.com (сделано мной), это сделано для предотвращения перехода приложений Heroku в спящий режим.Он будет проверять ваше приложение каждые 10 минут, поэтому ваше приложение не будет спать.Это совершенно бесплатно.

45 голосов
/ 30 марта 2011

Вы можете использовать http://pingdom.com/ для проверки своего приложения; если делать это каждую минуту или около того, heroku не будет простаивать в вашем приложении и не будет нуждаться в раскрутке.

38 голосов
/ 10 октября 2013

Простой ответ - если вы цените услугу, то платите за нее.

Все эти «уловки», чтобы получить преимущества платного обслуживания ... ну, по сути, это как кража кабеля.Сомнительно даже перечислить их здесь.Что дальше, уловки о том, как пиратские игры?

Как и другой постер, я ценю бесплатный сервис для разработки и тестирования, и я буду очень раздражен всеми типами с этическими нарушениями, если Heroku откажется от этого, потому чтоЕсть слишком много халявщиков.Я просто не думаю, что он был достаточно прямолинеен в своей критике.

27 голосов
/ 28 июня 2013

Протестировано и работает над моим собственным приложением Heroku с использованием Node.js 0.10.x 6/28/2013

var http = require('http'); //importing http

function startKeepAlive() {
    setInterval(function() {
        var options = {
            host: 'your_app_name.herokuapp.com',
            port: 80,
            path: '/'
        };
        http.get(options, function(res) {
            res.on('data', function(chunk) {
                try {
                    // optional logging... disable after it's working
                    console.log("HEROKU RESPONSE: " + chunk);
                } catch (err) {
                    console.log(err.message);
                }
            });
        }).on('error', function(err) {
            console.log("Error: " + err.message);
        });
    }, 20 * 60 * 1000); // load every 20 minutes
}

startKeepAlive();
17 голосов
/ 12 августа 2016

Я использую дополнение Heroku Scheduler, предоставленное Heroku бесплатно.После добавления это просто, как создать работу с 'curl http://yourapp.herokuapp.com' и 10-минутным интервалом.

10 голосов
/ 02 февраля 2013

В документации Heroku говорится, что наличие более 1 веб-динамо никогда не будет простаивать. Возможно, более дешевое решение, чем $ 0,09 / час, как предлагает Пьер.

enter image description here

Документация

9 голосов
/ 03 мая 2013

Я записал шаги:

➜ Добавьте gem 'newrelic_rpm' в свой Gemfile при подготовке и производстве
Install комплектация
➜ Войдите в панель управления герою и добавьте новый реликтовый аддон
Added После добавления настройте автоматический пинг на свой веб-сайт, чтобы он не простаивал
➜ Выберите «Меню»> «Мониторинг доступности» (в разделе «Настройки»). → Нажмите «Включить мониторинг доступности»
➜ Введите адрес для проверки связи (например: http://spokenvote.org)
➜ Выберите 1 минуту для интервала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...