この前の記事で作ったnode.jsの関数ですが、実は使ってると問題がありました。
何回か実行してると突然無反応になるんです。
というか、落ちてるっぽいんです。
最初は、なんやこれー?と悩んだんですが、途中で気づきました。
これ、使ってる辞書のデータがデカすぎてメモリオーバーフローしてんじゃない?
落ちてる箇所は安定しないのですが、ほぼ必ず二回以上しりとりを繰り返すとエラーとなってるようです。
やっぱそれっぽい。
確かに辞書データ、ファイルにすると5MBぐらいいってるんで、キツいんでしょうか。そもそもデフォルトのメモリっていくつやねん。
ということで調べてみました。
Firebase Functions と Cloud Functions
Firebase Functionsにデプロイした関数は、実際にはGoogle CloudのCloud Funcstionsにデプロイされます。
Google Cloud はここから行きます。
https://cloud.google.com/?hl=ja
Googleのプロジェクトは全てのサービスで共有されてるので、ここのコンソールでFirebaseで作成したプロジェクトを選択できます。
そこからCloud Funstionsを選択すると、すでに関数が追加されています。
Cloud Functions の割り当てメモリ
Cloud Functionsのスペックはここら辺に書いてあります。
https://cloud.google.com/functions/pricing?hl=ja
デフォルトの割り当てメモリは 256MB です。
Cloud Functionsの割り当てメモリ変更
めちゃくちゃ分かりづらいのですが、Cloud Functionsページで関数名を選択すると詳細ページに行きます。
右端のメニューボタンは削除とかログとかのショートカットです。関係ないので注意してください。
トップのメニューから編集を選択。
割り当てられるメモリで、今より多めのメモリを選択して保存します。
一度変更すると保存されるので、再度デプロイしてもそのままです。
所感
1GBに変更すると特に問題なくなりました。よかったよかった。
しかし、256MBもあるのに5MB程度のデータアクセスで落ちるってのも解せないんすよね。
以上です。