【问题标题】:Memory issues in a Cloud Storage Function云存储功能中的内存问题
【发布时间】:2021-08-17 08:30:37
【问题描述】:

我部署了一个需要更多内存的存储触发云功能。在部署 GCF 时,我以以下方式使用适当的标志进行了部署。

gcloud functions deploy GCF_name--runtime python37 --trigger-resource bucket_name --trigger-event google.storage.object.finalize --timeout 540s --memory 8192MB

但是我在google云控制台观察到,内存利用率图并没有超过2GB。在日志中我收到此错误,Function execution took 34566 ms, finished with status: 'connection error',这是由于内存不足而发生的。我能得到一些帮助吗?

已编辑

应用程序将文本文件上传到包含一定数量样本的存储。每个文件在上传到存储时都会被读取,并将数据附加到预先存在的文件中。样本总数最大为 75600002。这就是我需要 8GB 数据的原因。它在将数据附加到文件时给出了连接错误。

def write_to_file(filename,data,write_meta = False,metadata = []):
    file1 = open('/tmp/'+ filename,"a+")
    if write_meta:
        file1.write(":".join(metadata))
        file1.write('\n')
    file1.write(",".join(data.astype(str)))
    file1.close()

每次上传后的内存利用率图都是一样的。

【问题讨论】:

  • 首先,这种行为是随机的还是每次你得到connection error时。然后,如果您可以分享您的实现的更多细节,例如为什么需要 8GB 的​​云功能,它可能会有所帮助。
  • @MBHAPhoenix,我已经编辑了问题。希望它更清楚
  • 1) 您如何确定这是内存导致的连接错误? 2)您不包括与连接相关的详细信息/代码。只是写入 /tmp 的代码。编辑您的问题并提供一个可重现的示例来演示您的问题:stackoverflow.com/help/minimal-reproducible-example

标签: google-cloud-functions google-cloud-storage


【解决方案1】:

您正在向/tmp 写入一个文件,这是一个内存文件系统。因此,请在完成上传后删除该文件。事实上那些:

您编写的文件会消耗函数可用的内存,并且有时会在调用之间持续存在。未能明确删除这些文件最终可能会导致内存不足错误和随后的冷启动。

参考:https://cloud.google.com/functions/docs/bestpractices/tips#always_delete_temporary_files

【讨论】:

  • 我正在使用os.remove删除文件。
猜你喜欢
  • 2021-01-12
  • 2021-04-01
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2021-08-21
  • 1970-01-01
相关资源
最近更新 更多