Google Cloud Function内存不足错误没有意义

问题描述 投票:0回答:1

问题:

[您知道一种实际监视GCF(Node.js 8)正在使用多少内存的方法吗?您是否对Node.js 8的Google Cloud Functions(甚至本地)内存配置有建议?

上下文:

我部署了Google Cloud Function(NodeJS),具有128MB的内存,过去可以很好地工作。

今天,它无法说“ Error: memory limit exceeded.”。

[GCP告诉我,该函数使用的内存不超过58MiB,但是当它具有128MB时,它将失败并出现内存错误。

我感到迷茫和有缺陷,因为:

  1. 它曾经很奏效,从那以后我一直没有改变任何东西。
  2. [似乎在监视内存消耗方面我不信任Google

  3. 该功能的“详细信息”屏幕显示其消耗的内存不超过58MiB。"Details" screen of the function

  4. 我在Monitoring中创建的用于监视它的仪表板显示了相同的值。Screenshot from the dashboard
  5. 然而,它由于内存限制而失败。Logs of the function

我已经看到了这个问题Memory profiler for Google cloud function?,但是Stackdriver Profiler似乎不适用于GCF(per doc

node.js google-cloud-functions out-of-memory
1个回答
0
投票

从Google Cloud Console在Cloud Functions中设置内存分配。

documentation

要在Google Cloud Platform Console中设置内存分配和超时:

  1. 在Google Cloud Platform控制台中,从左侧菜单中选择Cloud Functions。
  2. 通过在功能列表中单击其名称来选择一个功能。
  3. 单击顶部菜单中的编辑图标。
  4. 从标记为内存分配的下拉菜单中选择内存分配。
  5. 单击更多以显示高级选项,然后在超时文本框中输入秒数。
  6. 单击保存以更新功能。

检查内存泄漏的内容(解决问题非常棘手):

  1. 异步等待功能。
  2. Promise在后台运行(带有.then)
  3. Writing to the writeable part of the filesystem/tmp/在功能实例中存储临时文件也将消耗为该功能配置的内存。

云功能的Auto-scaling and Concurrency concepts

每个功能实例一次只能处理一个并发请求。这意味着在您的代码正在处理一个请求时,不可能将第二个请求路由到同一实例。因此,原始请求可以使用您请求的全部资源(CPU和内存)。

云功能监视

这些是可用于监视您的云功能的可用资源:

© www.soinside.com 2019 - 2024. All rights reserved.