在Heroku的免费应用程序中,dyno似乎一直在空转——我的应用程序流量很低,但在我的情况下,我的用户不得不等待20多秒才能启动一个新的dyno,这也是不能接受的。
坦率地说,在这样的等待下,许多人甚至在第一页显示之前就离开了。
所以,我遇到了一个问题:当我每天的流量都在个位数时,我是否应该每月支付36美元来为每个用户节省令人尴尬的漫长20秒?
有没有办法解决这个问题?
在Heroku的免费应用程序中,dyno似乎一直在空转——我的应用程序流量很低,但在我的情况下,我的用户不得不等待20多秒才能启动一个新的dyno,这也是不能接受的。
坦率地说,在这样的等待下,许多人甚至在第一页显示之前就离开了。
所以,我遇到了一个问题:当我每天的流量都在个位数时,我是否应该每月支付36美元来为每个用户节省令人尴尬的漫长20秒?
有没有办法解决这个问题?
当前回答
我发现另一个免费的网站,将不断ping你的网站叫Unidler
http://unidler.herokuapp.com/
和pingdom一样,但是不需要登录。
其他回答
我有一个只需要在周一到周五午餐时间运行的应用程序。 我刚刚在crontab中添加了以下脚本:
#!/bin/sh
# script to unidle heroku installation for the use with cronjob
# usage in crontab:
# */5 11-15 * * 1-5 /usr/local/bin/uptimer.sh http://www.example.com
# The command /usr/local/bin/uptimer.sh http://www.example.com will execute every 5th minute of 11am through 3pm Mondays through Fridays in every month.
# resources: http://www.cronchecker.net
echo url to unidle: $1
echo [UPTIMER]: waking up at:
date
curl $1
echo [UPTIMER]: awake at:
date
因此,对于任何应用程序,只需在crontab中删除另一行:
*/5 11-15 * * 1-5 /usr/local/bin/uptimer.sh http://www.example.com
它在Heroku文档中说,拥有超过1个web dyno将永远不会闲置。可能有一个比皮埃尔建议的每小时0.09美元更便宜的解决方案。
文档
这里的大多数答案都已经过时或目前不起作用。目前个人账户的免费层是每月提供550个免费dyno小时。
一个经过验证的免费账户可以给你1000小时的免费动态。我写了一篇关于如何让我的免费应用保持清醒的文章。
https://link.medium.com/uDHrk5HAD0
希望它能帮助到2019年需要解决方案的人
我使用的Heroku调度插件由Heroku免费提供。一旦添加,它就像创建一个带有“curl http://yourapp.herokuapp.com”和10分钟间隔的作业一样简单。
我认为最简单的解决方法是每30分钟自我ping你自己的服务器。 下面是我在node.js项目中用来防止睡眠的代码。
const request = require('request');
const ping = () => request('https://<my-app-name>.herokuapp.com/', (error, response, body) => {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print body of response received
});
setInterval(ping, 20*60*1000); // I have set to 20 mins interval