Demo 的時候機子睡著好尷尬怎麼辦?用 UptimeRobot 或 cron-job.org 來幫你吧!

Demo

前言

作爲一名工程師,偶爾下班寫寫一些 Side Project 是滿正常不過的事情,而這些東西通常會放在免費的平台上,但是許多平台都有一個共通的問題,就是如果沒有人使用的話,它就會進入休眠狀態,這時候如果有人想要使用的話,就會需要等待一段時間,所以這一篇就會來介紹 UptimeRobot 以及 cron-job.org 這兩個服務。

免費平台

如同前面所提,我們在實作一些小專案或小玩具時,都會將這些玩具放到一些免費平台。

但是這些免費平台總是會有一些限制,以 Render.com 來講,官方文件就有提到這句話

Web Services on the free instance type are automatically spun down after 15 minutes of inactivity. When a new request for a free service comes in, Render spins it up again so it can process the request.

Google 翻譯:

免費實例類型上的 Web 服務在閒置 15 分鐘後會自動停止運行。 當一個新的免費服務請求進來時,Render 會再次啟動它,以便它可以處理該請求。

更詳細你可以看這邊 Free Web Services

這邊你可能會想說…

「那不要用 Render.com 就好啦?改用 fly.io 或是 Vercel 等等之類就好啦?」

沒錯,這確實是比較乾脆的事情,如果你非常在意即時的反應以及沒有延遲的請求的話,改到別的平台確實是一件比較好的事情,但是我個人認為 Render.com 的介面比 fly.io 或是 Vercel 來的簡單且非常接近原本的 Heroku(附註:Heroku 在 2022/11/28 停止免費專案)。

解決方案

那麼前面提了那麼多,接下來當然還是著重於如果我們使用的平台有休眠限制的話該怎麼辦這件事上,因為其實只要你的伺服器有使用的話,它就不會進入休眠狀態,所以我們只要讓它一直有使用就好了。

那麼該怎麼做到這件事情呢?其實有一些免費服務可以幫我們做到這些事情,底下我列出我知道的服務

這一篇會以 UptimeRobot 為主,因為我個人一直都是使用 UptimeRobot 為主,所以就以這個為主哩~

Note
cronhub 僅提供七天免費,後續都是要付費的,所以我就不介紹了。

UptimeRobot

首先請先到 UptimeRobot 註冊一個帳號,註冊完畢後,你會看到這樣的畫面

UptimeRobot

接下來我們點選左邊的 + Add New Monitor

Add New Monitor

接著點一下 Monitor Type 選擇 HTTP(s)

Monitor Type

接下來你需要關注這幾個欄位

  • Monitor Type:這個是監控的方式,我們選擇 HTTP(s)
  • Friendly Name:這個是你的服務名稱,可以隨便取
  • URL (or IP):這個是你的服務網址,如果你是使用 Render.com 的話,你可以在你的專案頁面找到你的網址,填上你的 https://你的專案名稱.onrender.com/ 網址就好
  • Monitoring Interval:這個是監控的間隔時間,如果你是使用免費版的話,你只能選擇 5 分鐘以上,所以我們就選擇 5 分鐘
  • Monitor Timeout:這個是監控的逾時時間,如果你的服務在 5 分鐘內沒有回應的話,就會被判定為掛掉,預設這邊保持 30 秒就好

其他部分你可以保持預設,接著點選 Create Monitor 就可以(如果你沒有打勾 Alert Contacts To Notify 的話,你會看到一個警告,你可以忽略它),接著你就可以在畫面上看到剛剛新增的監控

Monitor

這樣子每五分鐘 UptimeRobot 就會去呼叫你的服務,你的服務就不會進入休眠狀態了。

Note
Render.com 服務依照官方文件是在 15 min 沒有任何請求時才會進入睡眠,因此設置為每 5 分鐘請求一次 HTTP(s) 服務是滿足夠的。

那麼你也可以透過這個 Monitor 看到你的服務狀況,如果是 100% 代表監控這段時間完全沒掉線,如果是 99.9% 代表這段時間有 0.1% 的時間掉線
Monitor

這個服務很適合拿來監控你的服務,如果你的服務掛掉了,你就會收到一封信件,告訴你你的服務掛掉了,這樣子你就可以馬上去修復你的服務~

cron-job.org

cron-job.org 跟 UptimeRobot 比較不太一樣,它比較偏向於排程,他可以幫你定時去呼叫你的服務,讓你的服務不會進入休眠狀態。

使用方式也非常簡單,這邊就假設你已經註冊好了,所以你應該會看到這個畫面

cron-job.org

接著點一下 Create Cronjob

Create Cronjob

然後你只需要填寫以下

  • Title:這個排程的名稱
  • Url:你的服務網址,你的 https://你的專案名稱.onrender.com/ 網址就好
  • Execution schedule:排程的時間,這邊我們選擇每 5 分鐘一次

其他部分你可以保持預設,接著點選 Create 就可以,所以你應該預設會是這樣

Create Cronjob

接著新增後你畫面上就會有你剛剛新增的排程

Cronjob

接下來就會依照你的排程去呼叫你的服務,這樣你的服務也不會進入睡眠囉

結論

基本上 UptimeRobot 或 cron-job.org 都可以做到一樣的需求,可是 UptimeRobot 功能上會比較豐富,所以我個人是比較常用 UptimeRobot 就是了。

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ