You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非冷启动状态下AWS Lambda启动延迟10秒问题求助

Lambda非冷启动执行延迟超10秒问题排查与解决

问题背景

Node.js Lambda函数BalancerNoVPC通过自定义脚本每分钟第45秒触发调用,调用代码如下:

const command = new InvokeCommand({
  FunctionName: "BalancerNoVPC",
  InvocationType: "Event",
});

const response = await client.send(command);

log.info("Req ID: " + response.$metadata.requestId);

调用返回StatusCode: 202,脚本日志显示调用按时完成:

2024-12-06T10:15:45: INFO { m: 'Invoking Lambda' }
2024-12-06T10:15:45: INFO { m: 'Req ID: 3dc0a16d-a77d-4449-a1ff-92fbab6a929e' }
2024-12-06T10:15:45: INFO { m: 'Sleeping for 59916 ms' }

但非冷启动状态下,函数执行延迟超10秒:冷启动时START事件在调用后1秒内触发,Init Duration为736.98ms;后续调用中,START事件延迟至调用后11秒触发,最终因30秒超时退出:

2024-12-06T10:15:56.195Z START RequestId: 3dc0a16d-a77d-4449-a1ff-92fbab6a929e Version: $LATEST
2024-12-06T10:16:15.166Z END RequestId: 3dc0a16d-a77d-4449-a1ff-92fbab6a929e
2024-12-06T10:16:15.166Z REPORT RequestId: 3dc0a16d-a77d-4449-a1ff-92fbab6a929e Duration: 30000.00 ms   Billed Duration: 30000 ms   Memory Size: 128 MB Max Memory Used: 93 MB  Status: timeout

当前并发执行数约21次/分钟,远低于1000软限制,同步(InvocationType: "RequestResponse")和异步调用均存在该问题。

排查方向与解决方案

1. 优化内存配置,提升CPU资源

Lambda的CPU资源与内存配额正相关,128MB内存对应的CPU性能极低,可能导致调度排队、执行缓慢。

  • 将函数内存调整至256MB或更高,观察START事件触发延迟和执行时长变化。

2. 清理全局资源,避免容器复用阻塞

容器复用后,全局作用域的未释放资源(如数据库连接、定时器、未关闭的文件句柄)可能导致资源耗尽或逻辑阻塞:

  • 检查函数全局代码,确保每次执行后释放所有资源,或在处理新请求前重置全局状态(如清除定时器、关闭闲置连接)。
  • 示例:在函数处理逻辑开头添加资源清理代码:
    // 重置全局定时器(如果存在)
    if (global.timer) {
      clearTimeout(global.timer);
      global.timer = null;
    }
    // 关闭闲置数据库连接
    if (global.dbConnection) {
      await global.dbConnection.end();
      global.dbConnection = null;
    }
    

3. 替换自定义调用脚本为CloudWatch EventBridge

自定义脚本的调度精度和可靠性不如AWS原生服务,可能存在隐性延迟:

  • 使用CloudWatch EventBridge创建cron规则45 * * * ? *,直接触发Lambda函数,避免自定义脚本的调度误差。

4. 检查Lambda调度指标

在CloudWatch控制台查看以下指标,确认是否存在隐性调度限制:

  • ConcurrentExecutions:确认实际并发数是否接近账户或函数级限制
  • Throttles:检查是否存在调用被限流的情况
  • InvocationDelay:查看从调用请求到函数START事件的时间差,确认是否为平台级调度延迟

5. 启用预配置并发(可选)

如果需要稳定的低延迟执行,配置预配置并发让Lambda保持warm容器,避免调度排队:

  • 在Lambda控制台开启预配置并发,设置足够的容量覆盖每分钟21次的调用量。

内容的提问来源于stack exchange,提问作者DamiToma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:41:04