gpt4 book ai didi

java - 如何在 AWS Lambda 中调整 Java 垃圾收集器

转载 作者:行者123 更新时间:2023-12-02 01:56:37 25 4
gpt4 key购买 nike

在我当前的项目中,我使用 Java 编写了 AWS Lambda 函数。我寻找减少 Lambda 冷启动延迟的方法。不幸的是,目前我无法用其他语言(Python 或 Go)重写该函数。除了优化函数代码的标准操作之外,我还研究了其他方法。

根据经验,我发现 RAM 值的增加会导致性能提高。我很感兴趣在 Lambda 环境中使用哪种 JVM 配置,但它不是很容易获得的信息。所以我尝试使用下一个函数来迭代 RuntimeMXBean 中的 InputArguments (我在互联网上发现了类似的调查):

Lambda参数提取

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;

public class LambdaFunctionHandler implements RequestHandler<Object, String> {

@Override
String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);

RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List arguments = runtimeMxBean.getInputArguments();

for (String arg : arguments) {
context.getLogger().log(arg);
}

return "Call succeeded.";
}
}

我得到了这个结果:

-XX:MaxHeapSize=445645k
-XX:MaxMetaspaceSize=52429k
-XX:ReservedCodeCacheSize=26214k
-XX:+UseSerialGC
-Xshare:on
-XX:-TieredCompilation

如您所见,它配置为使用串行 GC 并且不使用分层编译。我不确定为什么 AWS 工程师选择这样的配置,但尝试使用其他一些 JVM 设置会很有趣。是否有能力在 AWS Lambda 的 JVM 中调整 GC,或者这是完全封闭的黑盒?

最佳答案

调整 GC 无助于改善 AWS Lambda 的冷启动时间。 JVM 语言的冷启动时间比某些替代语言更长,因为将 VM 实际加载到内存中,然后从 jar 文件中加载所有类需要花费时间。使用反射来确定加载内容的框架会进一步减慢速度。

要改进冷启动,请避免使用 Spring Boot 等框架并最大程度地减少依赖项。您也可以尝试使用 fat JAR。

关于java - 如何在 AWS Lambda 中调整 Java 垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52199875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com