Keep free heroku alive

前言

heroku 對於一個剛開始學習網路開發的學習者,算是非常的友善和方便。在免費的 application 佈署下有個限制,完成佈署後如果沒有使用者造訪網站,便會在最後一次造訪後的半個小時後進入休眠。

而每次要重新喚醒進入網站的時候,第一次總是會讀取很久,造成體驗上的不適。也是許多人想要解決的問題。

在最簡單的方式下便是花一點小費用,升級伺服器,讓伺服器可以不進入休眠狀態。另外一種方式便是每半個小時觸發一次造訪網站。

可行的方式便是設定 scheduler 或者藉由第三方造訪。

heroku 也有為此提供 addons,可惜的在免費的使用者有著 dyno hours 限制。

https://devcenter.heroku.com/changelog-items/907

在未提供信用卡的條件下,有著 550 free dyno hours,提供了之後會再增加 450 hours。所以總共最多會有 1000 hours。

那甚麼是 dyno hours 呢? https://devcenter.heroku.com/articles/usage-and-billing#computing-usage

heroku 做出了解釋,簡單的說也就是伺服器被程式觸發運行的時間,在我們如果不觸發長時間的運行下,1000 hours 是無法使用完的,但如果要讓他長時間醒著,表示 24 hrs都可以快速進入網站的情境下,一個月會使用掉 720 ~ 744 hours,剩餘可以使用設置 addons 便只剩餘 256 小時,所以使用內建的 scheduler 便無法滿足免費的狀態下,使用不休眠的網站。

選擇的方法

最後我選擇不使用 heroku 的 scheduler 插件增加額外的 dyno hours,也不在程式碼中,設置行程設定,避免萬一休眠時無法執行問題,而是選擇較為簡便的方式,

使用這個網站來幫我解決半小時觸發的問題。在使用上也是非常快速和簡單。

步驟:

  1. 註冊

  2. 完成註冊並且登入後,點選 members > Cronjobs > 右邊的 Create conjobs

option

title、address 填入你想造訪的網站,這邊我是使用非需登入使用的首頁做為觸發。

  1. 在 user-defined exection dates 做設定,month、 week 每個都是完全需要的,hours 的設定上,現在 heroku 已經取消每天 18 hrs的免費限制,可以使用 24 hrs,但我還是會設定在凌晨12點至早上8-9點是不觸發的。

  2. minutes 則是設定 0 和 30 兩個選項做為執行,而有時我會設定在 55 分和 25 分。

  3. 完成後便點選最下方的 Create cronjob。

當開始運作後,可以看到行程是否有成功或失敗以及觸發的時間。
result