在Heroku的免费应用程序中,dyno似乎一直在空转——我的应用程序流量很低,但在我的情况下,我的用户不得不等待20多秒才能启动一个新的dyno,这也是不能接受的。

坦率地说,在这样的等待下,许多人甚至在第一页显示之前就离开了。

所以,我遇到了一个问题:当我每天的流量都在个位数时,我是否应该每月支付36美元来为每个用户节省令人尴尬的漫长20秒?

有没有办法解决这个问题?


当前回答

你可以使用http://pingdom.com/来检查你的应用;如果每分钟左右执行一次,heroku将不会闲置你的应用程序,也不需要旋转。

其他回答

你可以使用http://pingdom.com/来检查你的应用;如果每分钟左右执行一次,heroku将不会闲置你的应用程序,也不需要旋转。

这里的大多数答案都已经过时或目前不起作用。目前个人账户的免费层是每月提供550个免费dyno小时。

一个经过验证的免费账户可以给你1000小时的免费动态。我写了一篇关于如何让我的免费应用保持清醒的文章。

https://link.medium.com/uDHrk5HAD0

希望它能帮助到2019年需要解决方案的人

如果你正在使用带有express的nodejs,你可以添加一个每10分钟调用一次自己的端点。

路由器:

app.get("/keep-alive",require("path/to/keepAlive.js").keepAlive);

keepAlive.js

let interval;

function keepAlive(req, res) {
   if(interval) return res.end();
   
   interval = setInterval(() => {
      fetch("http://your-heroku-subdomain/keep-alive")
         .catch(err => {/*handle error here*/});
      }
   ,60_000);


   return res.end();
}

module.exports = { keepAlive }

你可以安装免费的New Relic插件。它有一个可用性监控功能,每分钟会ping你的站点两次,从而防止dyno空转。

或多或少与Jesse的解决方案相同,但可能与Heroku更融合…而且还有一些额外的功能(性能监控非常棒)。

注意:对于所有那些说它不起作用的人:我的答案中重要的部分是“可用性监视器”。仅仅安装插件是没有用的。您还需要使用heroku应用程序的URL设置可用性监视。

一份cron工作就可以了。见https://cron-job.org。它是免费和可靠的。