【问题标题】:Firebase functions invocation/executaion limit is a painFirebase 函数调用/执行限制很痛苦
【发布时间】:2021-02-12 18:51:30
【问题描述】:

我正在使用 firebase 托管和函数一起将 PDF 转换为图像。

为此,我编写了一个函数,它获取文件并将 pdf 上传到存储中,生成签名 URL 并将其返回给用户。

在托管中,我编写了一个重写,将请求从 /ecc 重定向到 ecc 函数。

设置运行良好。网站已启动并正在运行。

但是当我让一小群 100 人使用它时。

然后 firebase 函数开始抛出 err 429 请求太多。

100秒内执行函数有限制吗?

这是日志:

错误:超出配额(配额组“CPUMilliSecondsNonbillable”超出配额,并限制消费者“project_number:992192007775”的服务“cloudfunctions.googleapis.com”的“每 100 秒函数调用中的 CPU 分配”。);要增加配额,请通过https://console.cloud.google.com/billing?project=myProject 在您的项目中启用计费。无法执行功能。 {"serviceContext":{"service":"ecc"},"context":{"reportLocation":{"functionName":"ecc","lineNumber":0,"filePath":"file"}}}

在 Firebase 定价中,它表示每月 125K 调用是免费的,但需要 40K GB 和 CPU 秒。

所以如果我有一个执行时间为 10 秒的函数,我每月只能调用 4000 个函数吗?并且每 100 秒限制 16 次调用。其他121K功能在哪里?

配额的更新信息

了解这里的限制真是令人头疼,这是主要的配额页面

函数执行时间为 10 秒。然后我会计算一下。

  • 1,2. CPU allocation in function Invocation PerDay150K。 由于某种原因,前两个相同。

  • 3. CPU allocation in function invocation per 100 seconds100k(0.1% CurrentUsage)。 意味着每 100 秒我可以“调用”10k 个函数。

  • 4. Function invocation per 100 seconds:50。好的,把第三点放在一边。

  • 5. Read Request Per Day:50可能和第四个一样?

  • 6. Function invocation per day : 5000 我一直在做梦,直到第 4 点睁开眼睛。

  • 7. Write request per day : 1000 功能部署可能吗?

  • 8. Write request per 100 seconds: 20 没关系。

现在考虑到所有这些,我可以说我每 100 秒可以执行 50 个函数。

我的错误是QUOTA EXCEEDED 'CPU allocation in function invocations per 100 seconds'

但是根据 QUOTA,每 100 秒 FUN INV 中的 CPU 分配是 100K !!! ??

它是如何超过限制的?

正如我所说,我的函数执行时间约为 5-10 秒,并且在调用限制的情况下,最大秒数为 500。

这是怎么回事?为什么QUOTA超过了?
beetwen ReadInvoking 函数有什么区别?

【问题讨论】:

  • 你确定这是你用的吗?作为文档says,此 CALL api 用于测试而不是用于生产,这就是它受到限制的原因
  • 这是我能想到的。我试过我自己,和我的朋友一起使用网站来确定。是的,firebase 函数日志中出现了速率限制。
  • 您的函数使用什么触发器以及如何触发它们?
  • 我正在使用托管和重定向网页请求以使用XMLHttprequest 运行并将文件和密码作为表单数据发送。我已将日志更新为主要问题。
  • @MethkalKhalawi 我通过主机重定向调用该函数,而不使用任何触发器。

标签: firebase google-cloud-platform google-cloud-functions


【解决方案1】:

从错误来看,您似乎超出了 Firebase Functions (CPU) 每月的配额,并且由于您使用的是免费套餐,因此每月只有 40K

在免费层 (Spark) 中使用 Firebase 函数非常有限,并且仅适用于 Node 8

要解决此问题,您需要升级到 Blaze 计划(即用即付)。其中也有免费层:

CPU --> 每月最多释放 200K

请阅读更多关于此here

【讨论】:

  • 我知道功能的定价以及它们的工作原理。但这里的问题是每 100 秒 API LIMIT 有 16 次调用。我之前提到过,当网站将有 100 个并发用户时,它只会向其中的 84 个用户抛出 429 错误,这非常糟糕。
  • 正如我之前所说,此限制用于测试,您永远不应该在生产中使用它。我们可以同意不再测试 100 个并发用户。 documentation says您不能增加 CALL 配额。如果您在生产中错误地使用此 API 调用您的函数,通常会出现配额不足的情况。请记住,此 API 旨在通过 Cloud Console 或 gcloud 函数调用 CLI 进行测试,它无法处理大量流量。
  • 困惑,我不知道这个页面指的是哪个api,我又读了一遍,我不清楚。我想执行一个名为 ecc 的函数,并使用 firebase cli 部署它。我正在使用托管并编写了一个重写,它将/ecc页面请求重定向到ecc函数,然后执行函数ecc。现在,在这个过程中,配额限制即将到来。问题出在哪里?
  • 我已经完全更新了主要问题。如果您现在可以很好地了解情况,请看一下。
  • 您好,您不能将配额相互关联。他们每个人都有不同的目的,一旦你达到其中一个的限制,你就不能再使用函数了。您在这里唯一能做的就是将您的 Firebase 帐单升级为 blaze。
猜你喜欢
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多