😴

Render.comのサーバーが寝てしまうので定期的に叩き起こして寝かせないようにする

2024/02/22に公開

結論

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