我们使用Firebase函数和一些不同的HTTP函数。
其中一个功能是通过我们网站的手动触发器运行的。然后,它从外部资源中提取大量数据,并将其保存到Firestore数据库中。我们的函数资源是Node.js 10、1GB内存和540 S。
然而,当我们需要输入大量数据集(例如,5000至10000条记录写入数据库)时,我们就会遇到问题。我们在以下大型数据集上收到一个错误:
8 RESOURCE_EXHAUSTED: Bandwidth exhaustedFirebase函数Health仪表板日志上的完整错误如下所示:
Error: 8 RESOURCE_EXHAUSTED: Bandwidth exhausted
at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:31:26)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:176:52)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:342:141)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:305:181)
at Http2CallStream.outputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:117:74)
at Http2CallStream.maybeOutputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:156:22)
at Http2CallStream.endCall (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:142:18)
at ClientHttp2Stream.stream.on (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:420:22)
at ClientHttp2Stream.emit (events.js:198:13)
at ClientHttp2Stream.EventEmitter.emit (domain.js:466:23)我们的Firebase项目是在烈火计划上,也是在GCP上连接到一个活跃的计费帐户上。
在对GCP进行检查时,我们似乎没有超出我们每分钟的写入量,正如之前所认为的那样,然而,我们已经超出了云构建限制。当我们从函数中将数据保存到防火墙时,我们也使用批写,这似乎也减少了db写入的数量。例如:

我们不使用云构建,所以我假设Firebase函数在后端使用Cloud来运行函数或其他什么,但是我找不到任何关于这个问题的文档。我们还有一些在创建文档时运行的防火墙数据库函数。不确定在后端是否使用了云构建。
知道为什么会发生这种事吗?每当发生这种情况时,我们的函数就会因该错误而终止,这导致我们只能导入一半的数据。数据导入可以完美地处理较小数量的数据。
请参阅我们在这个特定项目中的用法:




发布于 2021-05-17 13:01:02
云构建在云函数的部署过程中使用。如果您检查这个文档,您可以看到:
部署的工作方式是将包含函数源代码的归档文件上传到GoogleCloudStorage桶。一旦上传了源代码,云构建就会自动将代码构建到容器映像中,并将该映像推送到container。云函数使用该映像创建执行函数的容器。
这本身不足以证明你所看到的指控是正当的,但如果你检查一下集装箱图像文档,它会说:
因为整个构建过程都是在项目的上下文中进行的,所以项目必须对包含的资源进行定价:
因此,考虑到这些信息,我会有充分的猜测,您的网站触发HTTP函数的次数足够多,从而使云函数以新的方式扩展了这个特定的功能,从而触发了一个容器的构建过程,容器承载了这个函数,并将您作为云构建费用收费。因此,为了继续做你做的事情,你将不得不增加你的云构建配额,以满足你的网站的这一需求。
发布于 2021-07-01 21:50:58
在我导入的相同类型的新记录上,有一个Firestore触发器正在触发。
总之,我在一个集合中创建了数千条记录,对于其中的每一条,都触发了防火墙规则(函数),但当时我不知道的是,它在后台为运行的每个消防局触发器创建了一个新的构建过程,这在任何地方都没有文档记录。
https://stackoverflow.com/questions/67535433
复制相似问题