避免Heroku服务器进入休眠状态

17

我的网站托管在Heroku服务器上(顺便说一下,我是新手)。由于它属于免费套餐,所以在30分钟不活动后会进入睡眠状态。当用户再次访问时,需要大约7秒钟才能成功执行npm run start将其激活。

我正在考虑运行一个nodejs作业或类似的东西,每29分钟打开网站,这样服务器就永远不会进入睡眠状态。最初,我有了以下想法:

(function wakeup() {
  require('open')('https://mywebsite.herokuapp.com', (err) => {
    if (err) throw err;
    console.log('Woke up!');
    setTimeout(wakeup, 1740000); //29m
  });
})()

N.B.: 这只是在浏览器中打开它,但无法处理关闭它。

  • 首先,这种变通方式是否合法?
  • 其次,如果是的话,最佳实现方法是什么?
2个回答

36

您可以通过任何可用的手段,完全合法地让您的免费dyno保持唤醒状态,时间长短由您决定。只要注意您每月的免费dyno小时数是有限制的。

如果您已经使用信用卡验证了您的Heroku账户,每个月您将获得1000个免费dyno小时数,这已经足够让一个免费web dyno保持永久唤醒状态,而无需进入休眠。

非常简单的方法是为您的应用程序配置一个New Relic附加组件(使用免费的New Relic计划),您可以轻松地配置它以定期ping您的Heroku应用程序。

如需其他防止您的Heroku应用程序进入空闲状态的方法,请参见这里


8

试试 Kaffeine 吧,它可以防止你的应用程序休眠。 Heroku限制免费应用程序休眠6小时。Kaffeine让您可以选择应用程序休眠的时间。


我认为这在2021年已经不正确了。文档中没有提到:https://devcenter.heroku.com/articles/free-dyno-hours#quota - JCraine
@JCraine Kaffeine是独立的。它可以在任何网站上使用。 - Malek Kamoua
有人知道 Kaffeine 还在维护吗?我试过了,但是在日志中发现有 3.5 小时的时间没有 ping,所以服务器正在休眠。 - Kaigo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接