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

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

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

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


当前回答

这就是我的解。

使用谷歌应用程序脚本,设置时间触发器。

// main.js
function ping() {
  UrlFetchApp.fetch("https://<Your app>.herokuapp.com/ping_from_GAS");
}

这很简单!

其他回答

它在Heroku文档中说,拥有超过1个web dyno将永远不会闲置。可能有一个比皮埃尔建议的每小时0.09美元更便宜的解决方案。

文档

使用Node.js 0.10在我自己的Heroku应用上进行了测试和工作。X在2013年6月28日

var http = require('http'); //importing http

function startKeepAlive() {
    setInterval(function() {
        var options = {
            host: 'your_app_name.herokuapp.com',
            port: 80,
            path: '/'
        };
        http.get(options, function(res) {
            res.on('data', function(chunk) {
                try {
                    // optional logging... disable after it's working
                    console.log("HEROKU RESPONSE: " + chunk);
                } catch (err) {
                    console.log(err.message);
                }
            });
        }).on('error', function(err) {
            console.log("Error: " + err.message);
        });
    }, 20 * 60 * 1000); // load every 20 minutes
}

startKeepAlive();

请注意,新的动态类型(目前是测试版,将于2015年6月发布)将禁止让一个免费的动态保持24/7的唤醒状态,因为它必须每天至少睡6个小时。

所以试着在这篇文章出来之前删除你在这篇文章中找到的任何解决方案(或者为你实际使用的服务付费)。

伙计,这是一个你可以运行的英雄应用程序,让多个英雄应用程序存活下来。只需在config.json中添加你想要ping的url。

https://github.com/jcarras/rise-and-shine

我发现另一个免费的网站,将不断ping你的网站叫Unidler

http://unidler.herokuapp.com/

和pingdom一样,但是不需要登录。