在节点14运行时上部署Firebase函数,增加内存

chhkpiq4  于 2022-11-25  发布在  其他
关注(0)|答案(2)|浏览(132)

我们目前正在使用Firebase函数和节点14公共预览。
我们需要将函数的内存增加到1Gb以上。
Google Cloud函数的文档指定必须为最新运行时设置max_old_space_size,并且文档显示:

gcloud functions deploy envVarMemory \
--runtime nodejs12 \
--set-env-vars NODE_OPTIONS="--max_old_space_size=8Gi" \
--memory 8Gi \
--trigger-http

但是,set-env-vars选项不存在于firebase deploy
使用firebase deploy --only functions:myFunction --set-env-vars NODE_OPTIONS="--max_old_space_size=4Gi"会产生error: unknown option '--set-env-vars'错误。
在部署一个繁重的函数时,我逻辑上得到一个堆内存不足错误:

[1:0x29c51e07b7a0]   120101 ms: Mark-sweep (reduce) 1017.1 (1028.5) -> 1016.2 (1028.7) MB, 928.7 / 0.1 ms  (average mu = 0.207, current mu = 0.209) allocation failure scavenge might not succeed 
[1:0x29c51e07b7a0]   119169 ms: Scavenge (reduce) 1016.9 (1025.2) -> 1016.2 (1026.5) MB, 3.6 / 0.0 ms  (average mu = 0.205, current mu = 0.191) allocation failure

我们可以看到该函数只有1028Mb的RAM,而不是4。
我们确实要求它部署4Gb:

functions
    .runWith({ memory: '4GB', timeoutSeconds: 300 ,})

这里的关键是什么?

bttbmeg0

bttbmeg01#

我们遇到了完全相同的问题。它似乎发生在部署节点为12或更多的功能时。
以下是解决此问题的解决方案:
1.在GCP网络应用程序上查找您的职能
1.点击“编辑”
1.向下滚动并找到“运行时环境变量”
1.添加具有以下值的关键字NODE_OPTIONS:--最大旧空间大小=4096
以下是设置的图片:

这真的很烦人,我没有找到任何解决方案来设置这个设置,而部署在命令行。

ufj5ltwl

ufj5ltwl2#

您可以在函数文件夹中添加包含此环境变量的. env文件,如下所示:
. env文件内容:

NODE_OPTIONS=--max-old-space-size=8192

确保从npm安装dotenv软件包:

npm i dotenv

相关问题