我应该多久访问一次Heroku服务器以保持其唤醒状态?

时间:2019-06-30 02:07:01

标签: javascript node.js heroku

经过Chrome调试后,我发现唤醒需要将近6秒钟的时间。

根据您的计算方式,大约有5-10种方法可以使它保持清醒状态:google search可以吸引无数的站点和实现此目的的方法。

某些方法建议定期ping,而其他方法建议定期GET请求。

我处理了常规的GET请求,因为它只是要添加到服务器中的一个小文件:

const http = require("http");
let INTERVAL = 300000; // 5 minute, keep a let for debugging
INTERVAL = 600000; // 10 minutes 
const SITE = "http://www.your-site.ai";

let count = 0;

setInterval( () => {
  count++;
  wakeSite();
}, INTERVAL);

function wakeSite() {
  const output = http.get(SITE);
  console.log('DEBUG: ' + count);
}
function interface () {}
wakeSite();
module.exports = interface;

我应该将INTERVAL设置为什么,并且在Heroku文档中将其记录在何处?

根据7年前的Heroku article,应用程序会在1小时后进入睡眠状态。

这仍然有效,什么唤醒了应用程序?一个简单的ping请求还是需要完整的GET。 Heroku是否支持该应用的常规“ josteling”?

2 个答案:

答案 0 :(得分:1)

如果某个应用具有免费的网络测功机,并且该测功机在30分钟内没有收到网络流量,它将进入休眠状态。

https://devcenter.heroku.com/articles/free-dyno-hours

闲置一小时(输入和输出中)后,与一次性测功机的连接将关闭。当连接关闭时,将向SIGNOP发送测功机。此空闲超时有助于防止意外收费使交互式控制台会话保持打开状态和未使用状态。

https://devcenter.heroku.com/articles/limits#dynos

因此,任何网络流量都会将其唤醒

关于如何预防的答案已经足够了, 像this one

答案 1 :(得分:-1)

  

经过Chrome调试后,我发现唤醒需要将近6秒钟的时间。

如果这是“不可接受的”,则您应该为爱好级(或更高级别)的测功机付费。他们从不睡觉,并带来诸如ACM之类的额外好处。

如果您坚持使用免费套餐,请记住there is a limit to the number of free dyno hours you can use

  

帐户每月有550个免费动态小时基础。除了这些基本小时数外,verify with a credit card的帐户还将获得另外450小时的免费小时dyno配额。这意味着,如果您使用信用卡验证帐户,则每月总共可以享受1000个小时的免费dyno小时。

450小时约为23天(显然不足以运行一个月),并且这些时间在您帐户中的所有免费测功机中共享。即使拥有经过验证的帐户,您每月也只能获得约41个小时的时间-不足以连续运行两次测功。