我们希望从Firebase函数中运行global.gc()
。在本地,我们使用node --expose-gc ...
启动节点进程。我们如何使用部署的Firebase函数来实现类似的功能?
据我所知,当Firebase函数启动时,没有办法注入node --expose-gc
。此外,在Firebase Function启动节点之前,似乎无法设置NODE_OPTIONS="--expose-gc
。
我们已经尝试从Firebase函数中设置process.env.NODE_OPTIONS='--expose-gc'
。然而,这是行不通的。我们假设不起作用的原因是必须在节点启动时(而不是在节点已经运行之后(设置--expose-gc
。
我不熟悉;Firebase函数";上下文是结构化的,但如果它只是一个普通的NodeJS上下文,则可以内联添加V8标志:
import v8 from 'node:v8';
v8.setFlagsFromString('--expose-gc');
无法为运行函数的节点进程指定任何命令行参数。这实际上是一个安全问题。只要GC必须通过命令行参数启用,那么使用云函数就不可能实现您想要做的事情。
考虑使用Cloud Run,它允许您以任何方式构建服务器映像,包括运行节点的参数。