Render.comのサーバーが寝てしまうので定期的に叩き起こして寝かせないようにする
結論
GAS を使って定期的にサーバーにアクセスする
(以上!)
前置き
こんにちは、ゲーム好きのゆらゆらです。
(Splatoon3 の DLC、Side Order が待ち遠しいですね!🦑🐙)
普段、私は Discord を使用して友人たちとゲームしながら音声チャットを楽しんでいます。この Discord サーバーでは、「誰かがボイスチャットルームに入室(退室)した際、特定のテキストチャンネルに通知を送る」という BOT(Node.js) が動いています。
Render.com の無料プランだとサーバーがすぐに寝てしまう
この BOT 運用には、Render.com というサービスを使っています。Render.com は簡単・便利なサービスなのですが、無料プランを使用していると、15 分間何も活動がないと自動でサーバーが Sleep 状態になるという注意点があります。
例えば今回の BOT のような使い方の場合、サーバーが Sleep 状態になると、誰かがボイスチャットに入室または退室した際、すぐに通知を送るということができなくなります。なぜなら、サーバーが再起動して BOT が再び動き出すまでには時間がかかり、その間に発生したイベントは捉えられないからです。
これでは、この BOT の意味がないですよね。
そこで今回は、Render.com のサーバーの Sleep 回避方法について解説したいと思います。
叩き起こす方法
具体的には、GAS を使って HTTP リクエストを Render.com のサーバーに定期的に送信します。
シンプルですね。
※他のサービスを使った例も見かけたのですが、新しくアカウントを作らなくてもいいので GAS を選びました。
具体的な方法
以下のコードを
function main()
{
var url = 'https://{ここにアプリケーションのURL}.onrender.com';
var data = UrlFetchApp.fetch(url).getContentText();
}
トリガーを設定して定期実行するだけです。
(あまり叩きすぎてもアレなので、10 分ごとに設定しています。)
たったこれだけ。簡単ですね。
実際に運用してみて
かなり快適に運用できています。
GAS のエラーもたまーにありますが、実用上は全然問題ない程度です。。
まとめ
この方法を使えば、Render.com の無料プランにおけるサーバーの Sleep 問題を簡単に解決できます。
みなさんもよき、Render.com ライフを!
Discussion