当前位置: 首页 > 知识库问答 >
问题:

用Lambda创建AmazonS3Client时的OutOfMemoryError

柯乐童
2023-03-14
public class LambdaHandler {

    private final AmazonS3Client s3Client = new AmazonS3Client();

    public void gdeltHandler(SNSEvent event, Context context) {
        System.out.println("Starting");
        System.out.println("Found " + eventFiles.size() + " event files");
    }

我为函数分配了128MB内存,这真的不足以简单地获取凭据并实例化AmazonS3Client对象吗?

我尝试给AmazonS3Client构造函数

new EnvironmentVariableCredentialsProvider()

以及

new InstanceProfileCredentialsProvider()

编辑1如果我将分配给函数的内存增加到192MB,它就可以正常工作,尽管奇怪的是,报告在cloudwatch日志中只使用59MB内存。我只是失去了剩下的记忆吗?

共有1个答案

太叔小云
2023-03-14

在Lambda函数中使用AWS Java SDK时,我一直观察到这一点。似乎在创建任何AWS客户机(同步或异步)时,您都可能会离开Metaspace。

我认为这是由于Amazon客户机在实例化时执行的操作,包括AmazonHttpClient创建以及请求处理程序链的动态加载(AmazonEC2Client#init()私有方法的一部分)。

报告的内存使用情况可能是堆本身的,但可能不包括元数据库。AWS论坛上有一些线程,但没有AWS对此事的回应。

 类似资料:
  • 我可以使用以下语法序列化lambda: 然而,如果我从客户机代码接收到lambda,并且它没有被适当地强制转换,我就无法序列化它。 如何在不更改其定义的情况下序列化下面的: 我尝试序列化一个“派生”对象: 但是在每种情况下,都失败,。

  • 问题内容: 我正在尝试按照此处描述的指南开发AWS Java lambda函数。它描述了接口的实现,还引用了aws-lambda-java- core库。但是,我尝试按此处推荐的那样使用最新的SDK,但这完全不同,而且该接口似乎不再存在。 我不清楚我需要什么Java库的名称和版本。是否有关于所有不同版本的AWS Java库的指南以及任何更新的示例。我必须承认,我完全对AWS Java库版本和命名感

  • 一切都开始了,因为Spring Cloud AWS没有正确配置SimpleStorage原型解决方案。此类负责在使用ResourceLoader时处理s3://协议。有关更多详细信息,请参阅问题:无法在Spring AWS示例上强制转换为org.springframework.core.io.WritableResource。 所以,我不得不手动创建它。但我也在使用LocalStack解决方案(h

  • 从上周开始,向我们的S3存储(caringo swarm)上传文件时,经常会在处随机挂起,我很难找到解决方案。我有一个非常简单的复制从我的桌面。大约10分钟后,文件确实成功上传,但它应该是亚秒响应时间。 这是一个。NET Framework 该问题在.NET Framework 4.7.2和4.8中都发生 我正在使用最新的awssdk.core和awssdk.s3 NuGet包 从供应商的网站手动

  • 我从我的帐户中删除了所有现有的lambda函数,并从我现有的贡献中删除了所有的lambda函数。但这并没有解决问题。我还应用了这里提到的修复程序,得到了相同的结果。 你能帮我创建一个新版本或者找到并删除我必须删除的lambda版本吗?

  • 问题内容: 我试图在迭代对象列表的循环内创建: 现在,如果我遍历lambda列表并这样称呼它们: 我得到相同的价值。这是最后的价值obj在,因为那是在列表迭代器的块中的最后一个变量。有什么想法可以很好地重写代码以使其正常工作吗? 问题答案: 使用此行: