我应该多久访问一次 Heroku 服务器以使其保持清醒? [复制]

Posted

技术标签:

【中文标题】我应该多久访问一次 Heroku 服务器以使其保持清醒? [复制]【英文标题】:How often should I access my Heroku server to keep it awake? [duplicate] 【发布时间】:2019-11-11 07:14:40 【问题描述】:

经过一些 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 是否支持应用程序的常规“推挤”?

【问题讨论】:

【参考方案1】:

经过一些 Chrome 调试后,我注意到它需要将近 6 秒才能唤醒,这是不可接受的。

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

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

帐户每月可获得 550 个免费测功小时。除了这些基本时间之外,verify with a credit card 的帐户将在 每月免费 dyno 配额中获得额外的 450 小时。这意味着,如果您使用信用卡验证您的帐户,您每月总共可以获得 1000 个免费的 dyno 小时。

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

【讨论】:

【参考方案2】:

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

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

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

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

所以任何网络流量都会唤醒它

关于如何预防已经有足够的答案, 喜欢this one

【讨论】:

获取请求似乎有点矫枉过正。我可以在我的节点服务器代码中设置一个 setTimeout 来更新单个变量而根本没有任何网络活动吗?还是当您说“任何活动”时我不明白您的回答? 我正在做内部 GET 请求,它工作正常。我认为网络流量甚至不需要“外部”

以上是关于我应该多久访问一次 Heroku 服务器以使其保持清醒? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的计划工作人员

我应该合并事实表的列以使其更窄,还是应该通过大量列使其对用户更友好?

我应该如何改进线程池以使其更安全?

我应该如何覆盖 VideoView 的 onDraw 以使其具有透明的圆角?

我应该在哪里添加我的子视图以使其位于 UITableViewController 中的表视图下?

如何使 thunk 独立于状态形状以使其可移植?