iT邦幫忙

2021 iThome 鐵人賽

DAY 24
1

上一篇成功將 Nestjs 部屬到 heroku 上面,不過我們使用的是免費方案,免費方案有幾個限制:

  • 如果 30 分鐘內,沒有請求的話,機器會進入休眠,直到新的請求才會喚醒,但是喚醒的時候需要一點時間,新的請求 API 會卡住很久
  • 免費的機器使用上限只有 500 多個小時,如果都不關機的話,會有一陣子要關機才夠應付限制使用

於是這一篇要來解決上述兩個限制

利用 uptime 讓 heroku 永不休眠

https://ithelp.ithome.com.tw/upload/images/20211009/20120107I3vNSn7iCM.png

uptime 是一個監控服務,可以監控你的服務目前運行的狀態,如果不正常的時候也能發出警告。

而我們可以利用 uptime 的免費額度裡面,去監控 heroku 的狀態,雖然有點弔詭,就會變成用一個免費的服務去監控另一個免費的服務確保他不會休眠

https://ithelp.ithome.com.tw/upload/images/20211009/20120107pGpJPOggQI.png

設定的方法也很簡單,在uptime 新增一個監控後,輸入 heroku API 的位置之後,在設定監控的頻率。以這個例子而言,設定每15分鐘打一次網站的請求,如果網站有回應,就會被視為運作中。

而heroku 也因為每15分鐘都有來自 uptime 的請求,所以不會進入休眠模式

增加機器免費運行的時間

增加機器運行的時間其實沒有什麼特別厲害的技巧,就是綁定信用卡,綁定信用卡可以增加額外500小時的免費運行時間,這樣總共有1000小時左右的免費運行時間。

如果只有一個服務在運作的話,這樣的免費時間已經超過一個月的時間了,也可以達成機器使用時間永遠不會超過,也不必擔心被額外收費


上一篇
DAY23 - 將作品發布出去吧 - 後端篇 (heroku)
下一篇
DAY25 - 展現成果,建立成果頁面
系列文
做一個面試官無法拒絕的sideproject,當一個全能的前端30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 4 級 ‧ 2022-05-08 18:10:25

請問heroku API 的位置是網址嗎?

對的,所以你可以寫一個專門喚醒,沒做什麼事情的API,不斷去戳他就可以了

arguskao iT邦新手 4 級 ‧ 2022-05-10 23:08:38 檢舉

之前不知道在那裡看過,免費版好像一天一定要休息幾個小時,不知道現在是不是

不是,是你每個月總執行時間有一個限制,超過之後就不能用了。但是你的服務如果30分鐘沒有人使用,會自動休眠,如果下一個人要使用,喚醒會需要一點時間,所以要一直去戳他,假裝一直有人在用

我要留言

立即登入留言