在Heroku的免费应用程序中,dyno似乎一直在空转——我的应用程序流量很低,但在我的情况下,我的用户不得不等待20多秒才能启动一个新的dyno,这也是不能接受的。
坦率地说,在这样的等待下,许多人甚至在第一页显示之前就离开了。
所以,我遇到了一个问题:当我每天的流量都在个位数时,我是否应该每月支付36美元来为每个用户节省令人尴尬的漫长20秒?
有没有办法解决这个问题?
在Heroku的免费应用程序中,dyno似乎一直在空转——我的应用程序流量很低,但在我的情况下,我的用户不得不等待20多秒才能启动一个新的dyno,这也是不能接受的。
坦率地说,在这样的等待下,许多人甚至在第一页显示之前就离开了。
所以,我遇到了一个问题:当我每天的流量都在个位数时,我是否应该每月支付36美元来为每个用户节省令人尴尬的漫长20秒?
有没有办法解决这个问题?
当前回答
我发现另一个免费的网站,将不断ping你的网站叫Unidler
http://unidler.herokuapp.com/
和pingdom一样,但是不需要登录。
其他回答
在我看来,使用服务的“免费”层不应该为产品或面向客户的应用程序提供动力。虽然上面的解决方案可以防止Dyno空转,但请仔细考虑您正在做的事情。
如果没有其他方法,可以使用cron作业来ping你的站点,并在已知的低使用率时期(例如,夜间)禁用检查,以确保Heroku不会为其他所有人取消免费层。
这里的大多数答案都已经过时或目前不起作用。目前个人账户的免费层是每月提供550个免费dyno小时。
一个经过验证的免费账户可以给你1000小时的免费动态。我写了一篇关于如何让我的免费应用保持清醒的文章。
https://link.medium.com/uDHrk5HAD0
希望它能帮助到2019年需要解决方案的人
伙计,这是一个你可以运行的英雄应用程序,让多个英雄应用程序存活下来。只需在config.json中添加你想要ping的url。
https://github.com/jcarras/rise-and-shine
你可以安装免费的New Relic插件。它有一个可用性监控功能,每分钟会ping你的站点两次,从而防止dyno空转。
或多或少与Jesse的解决方案相同,但可能与Heroku更融合…而且还有一些额外的功能(性能监控非常棒)。
注意:对于所有那些说它不起作用的人:我的答案中重要的部分是“可用性监视器”。仅仅安装插件是没有用的。您还需要使用heroku应用程序的URL设置可用性监视。
在一个spring应用程序中,每2分钟向根url路径发出一个HTTP请求 `
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();
}
}