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

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

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

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

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

Ответы [ 16 ]

3 голосов
/ 21 июня 2015

Если у вас есть доступ к постоянно работающему Unix-серверу, вы можете установить для cron GET свой веб-сайт. В соответствии с новыми условиями бесплатного плана, вы, вероятно, захотите отключить GET s в ночные часы, используя строку в вашем crontab, например:

*/20 8-22 * * * /usr/bin/curl domain.com &> /dev/null

Это указывает от curl до GET domain.com каждые 20 минут между 8 и 22 часами.

Помните, что

  1. Не все, кто хочет видеть ваш сайт, живут в вашем часовом поясе и
  2. Ваш сайт может получать другие запросы посреди ночи, пробуждая динамометрическую систему и вызывая еще один час использования каждого запроса. Даже если никто не знает ваш домен, есть роботы и сканеры, которые активны все время. Поэтому, желательно, чтобы процесс, определенный в вашем crontab, был активным только в течение 14-16 часов, чтобы обеспечить защиту от этих пробуждений

Кроме того, убедитесь, что ваше системное время установлено правильно, чтобы окно простоя происходило, когда вы этого ожидаете.

3 голосов
/ 20 мая 2015

Обратите внимание, что новые типы динамометрических сообщений ( в настоящее время в бета-версии , поступающих в июне 2015 года) будут запрещать держать династию в активном режиме 24/7, так как она будет спать не менее 6 часов в день.

Поэтому попробуйте удалить любое решение, которое вы нашли в этой теме, прежде чем оно выйдет (или заплатите за фактически используемую вами услугу).

3 голосов
/ 30 марта 2014

Я нашел другой бесплатный сайт, который будет постоянно пинговать ваш сайт, под названием Unidler

http://unidler.herokuapp.com/

То же, что и pingdom, но не требуется вход в систему.

1 голос
/ 05 сентября 2014

Парень, вот приложение heroku, которое вы можете запустить, чтобы поддержать несколько приложений heroku.Просто добавьте URL, которые вы хотите пропинговать, в config.json.

https://github.com/jcarras/rise-and-shine

1 голос
/ 11 мая 2014

это работа для меня в весеннем приложении, которое отправляет один http-запрос каждые 2 минуты к корневому URL-пути `

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.client.RestTemplate;

public class HerokuNotIdle {

private static final Logger LOG = LoggerFactory.getLogger(HerokuNotIdle.class);

@Scheduled(fixedDelay=120000)
public void herokuNotIdle(){
    LOG.debug("Heroku not idle execution");
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getForObject("http://yourapp.herokuapp.com/", Object.class);
}
}

Не забудьте сконфигурировать ваш контекст, чтобы включить планировщик и создать bean-компонент для вашего планировщика

@EnableScheduling
public class AppConfig {

@Bean
public HerokuNotIdle herokuNotIdle(){
    return new HerokuNotIdle();
}
}
0 голосов
/ 22 февраля 2015

У меня есть приложение, которое должно работать только с понедельника по пятницу около обеда.Я просто добавил следующий скрипт в crontab на работе:

#!/bin/sh
# script to unidle heroku installation for the use with cronjob
# usage in crontab:
# */5 11-15 * * 1-5 /usr/local/bin/uptimer.sh http://www.example.com
# The command /usr/local/bin/uptimer.sh http://www.example.com will execute every 5th minute of 11am through 3pm Mondays through Fridays in every month.
# resources: http://www.cronchecker.net
echo url to unidle: $1
echo [UPTIMER]: waking up at:
date
curl $1
echo [UPTIMER]: awake at:
date

Так что для любого приложения просто добавьте еще одну строку в вашем crontab, например:

*/5 11-15 * * 1-5 /usr/local/bin/uptimer.sh http://www.example.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...