很多線上主機服務商提供的免費方案都有服務限制, 例如在 render.com 佈署的網路服務若 15 分鐘內沒有任何請求就會強制進入休眠, 該服務的容器會被銷毀以釋放資源, 配置的記憶體變數, 暫存檔, session 等全部會消失 (僅保留環境變數與持久性資料庫). 當下次收到請求時會啟動一個新的容器重新佈署服務 (載入程式與 .env 環境變數, 初始化 Flask/Gunicorn), 這個服務喚醒過程通常會花掉 數十秒, 這會帶來極差的服務體驗. 如果要讓容器一直保持清醒, 就必須利用外部的激活器 (喚醒機器人) 在時限內週期性地對服務提出 HTTP/HTTPS 請求以避免進入休眠.
我以前都使用 Linux 的 Crontab 週期性地執行一個 Python 程式或 Shell script 對服務主機提出請求, 只要用一個樹莓派 Pi Zero 就可以了. 今天發現有一個線上服務 UptimeRobot 可以達到此功能, 免費帳戶可以喚醒多達 50 的 endpoint 服務, 網址如下 :
按右上角的 "Register for FREE" 鈕 :
填寫 Email 與密碼按 "Register for now" :
UptimeRobot 會寄一封確認信到信箱, 收信按信中的 "Activate your account" 鈕 :
這樣會開啟 UptimeRobot 登入頁面, 輸入帳密登入 :
登入成功後會顯示設定頁面, 勾選中間的 HTTP/HTTPS, 然後將要喚醒的服務網址貼在下方的 URL to monitor 欄位中, 按 Create monitor 鈕 :
這網址是我在 render.com 上用 serverless 函式執行平台寫的一個回應 Hello 的 Flask app, 可在函式列表中的執行超連結上按滑鼠右鍵複製網址得到 :
關於 render.com 用法參考 :
關於 serverless 函式執行平台參考 :
設定完成會顯示通知測試頁面, 按 "Send test e-email notification" 鈕會寄通知信, 要去信箱看看有沒有收到, 以後只要喚醒失敗或之後成功都會寄通知信 :
最後顯示完成頁面 :
按中間的狀態統計網址會開新視窗顯示喚醒的成功率 :
按 Finish setup 則會顯示儀表板頁面 :
儀錶板上會顯示目前已建立了哪些喚醒機器人, 也可以編輯管理這些機器人 :
2025-11-24 補充 :
我前陣子註冊了第二個 render.com 免費帳戶, 架設了 serverless 函式執行平台, 並且使用 UptimeRobot 定時喚醒 (免費帳戶最低周期是 5 分鐘) 該服務來避免虛擬主機進入休眠, 觀察一陣子後發現這並不保險, 該 render.com 主機還是偶爾會休眠, 可見 UptimeRobot 並不保障一定能喚醒, 所以我在 P3 A+ 主機上還是安排了 crontab 來做為主要喚醒來源, UptimeRobot 就當作輔助喚醒器.












沒有留言 :
張貼留言