初めに
fly.ioの特徴は、renderと異なり、無料プランでも使用可能時間制限やDatebaseの制約がないことです
記事によってはデプロイしてもフリーズしにくいあるいはフリーズしないという意見もあります
しかし、実際、デプロイしてみてわかったこととすると一定時間触れていないと重くなる動作が頻発します
そこで、今回はfly.ioのフリーズ防止について、自ら調べた点についてまとめました
この対応をしておけば、フリーズの問題も解決できると思いますので、fly.ioでデプロイしている方はご確認いただければと思います
フリーズとは何か?
簡単に言うと動作が重くなるということです
デプロイでよく使用されるRender.com, Herokuなどはコスト削減のため無料プランだと一定期間アクセスがない場合、サーバーがスリープされ、アプリのアクセスに時間がかかります
現状のfly.ioでは約5分以内にリクエストが行われないと、アプリはスリープ状態になります。スリープを完全になくすのは難しいと考えますが、これを30分に増やすことを目標にしております
fly.ioのスリープ対策方法
1: fly.tomlの設定を変更する
fly.tomlを開き、
auto_stop_machines を false に、
auto_start_machines を true に設定変更します
auto_stop_machines = false
auto_start_machines = true
2: 独自のタイムアウトを設定
server.tsを開き、独自のタイムアウトを設定します
// 新しいタイムアウトを開始する
clearTimeout(timeout)
timeout = setTimeout(exit, TIMEOUT)
タイマーが完了したら、コード 0 で終了するよう修正します
// SIGINTかタイムアウトできれいに終了する
// フライプロキシは次のリクエストが来たときにアプリを再起動する
function exit() {
console.log("exiting")
browser.close()
process.exit()
}
server.tsがvscord上にあるかは、プロジェクトの構成によるので、確認が必要です
私の場合、プロジェクトの構成に含まれていなかったため、独自のタイムアウト設定は省いています
3.デプロイして再起動する
下記のコマンドでデプロイし、動作が軽くなっているか確認します
fly deploy
以上です
質問、不明点ございましたら、コメントにてご連絡のほどよろしくお願いいたします
参考文献
https://community.fly.io/t/how-to-increase-app-sleep-threshold/17783