【问题标题】:AWS Lambda Cold Start with java taking more than 10 secAWS Lambda Cold Start with java 耗时超过 10 秒
【发布时间】:2018-02-21 03:38:49
【问题描述】:

我在 java 中的 AWS 上有 lambda 函数,具有以下规格:

代码大小:35 MB 功能内存:3GB 超时:5 分钟 Cloudwatch 升温时间表:1 分钟

我正在使用JRestless Wrapper。

以下是我的 RequestHandler 方法:

    public class RequestHandler extends GatewayRequestObjectHandler {
    static ResourceConfig resourceConfig = new ResourceConfig().register(GatewayFeature.class)
            .register(RequestContextFilter.class).packages("com.xyz.abcd");

    static RequestHandler bc = new RequestHandler();
    static {
        resourceConfig.property("contextConfigLocation", "classpath:web-application-context.xml");
        bc.init(resourceConfig);
        bc.start();
    }

    /**
     * 
     */
    public RequestHandler() {
        super();
    }
}

尽管预热时间最短为 1 分钟 lambda 函数冷启动至少 20 次24 小时 并且每次需要超过 10 秒。

【问题讨论】:

  • 与冷启动相关的问题通常是由处理程序外部引起的。所以你可能想先看看那部分。
  • 你的函数在 vpc 中吗?

标签: java amazon-web-services aws-lambda cold-start


【解决方案1】:

如果我没有正确理解您的设置,那么您正在使用每分钟运行一次的热身调用。

您的函数的并发限制是多少?如果您有多个调用以高于 1 的并发级别到达您的 lambda,那么每个额外的调用/请求都会冷启动。

这是一个非常典型的突发流量场景。

如果确实如此,您将不得不在预热阶段发出更多的调用(接近您希望服务接收的调用的数量)。

确保您也将这些短路,以避免不必要的成本和潜在的下游压力。

您可能遇到冷启动的另一个原因是运行您的函数的硬件或容器存在问题并且不得不死机,即您无法控制的因素。即使在这些情况下,上述设置也有助于将冷启动次数降至最低。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 2019-10-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多