为何Lambda的ConcurrentExecutions未全部匹配ProvisionedConcurrentExecutions
我有一个关于预配置并发(Provisioned Concurrency)的技术问题:我已为指定Lambda版本配置了预发并发,运行指标如下。我观察到
ConcurrentExecutions与ProvisionedConcurrentExecutions两个指标并未重叠,我设置的Lambda最大预配置并发为10,但图表显示仅2个预发并发被使用,剩余8个处于空闲状态。由于当前实际并发数远低于10的预发配置上限,想请教为何并非所有ConcurrentExecutions都属于ProvisionedConcurrentExecutions?
问题解答
以下是该问题的常见原因及排查方案:
- 调用未指向绑定预配置并发的版本/别名:预配置并发仅作用于绑定的特定Lambda版本,或指向固定版本的别名。如果你的调用触发端配置的是
$LATEST版本、或未明确指定对应版本,调用只会使用按需启动的实例,不会占用预配置并发配额。 - 指标统计维度不匹配:CloudWatch默认的
ConcurrentExecutions指标会统计该Lambda函数所有版本、所有别名的并发调用量,而ProvisionedConcurrentExecutions仅统计绑定了预配置并发的版本的用量。如果没有给两个指标都加上FunctionVersion筛选条件,统计范围不一致自然会出现指标不重合的情况。 - 突发请求调度延迟:短时间内请求量突增时,Lambda调度逻辑可能存在秒级的调度窗口,会临时启动按需实例响应请求,哪怕预配置实例仍有空闲,该情况会在请求平稳后自动恢复。
- 版本配置不匹配:如果你更新过Lambda代码、运行时或环境变量后未发布新版本,也没有给新版本重新配置预配置并发,旧版本的预配置实例无法匹配新的调用请求,会导致预配置并发闲置。
快速排查步骤
- 进入Lambda控制台的版本管理页,确认预配置并发绑定的版本号,检查调用触发端(API Gateway、EventBridge等)的配置,明确指定对应版本或绑定该版本的别名,禁止使用
$LATEST或留空版本号。 - 进入CloudWatch指标控制台,给
ConcurrentExecutions和ProvisionedConcurrentExecutions两个指标都添加FunctionVersion维度,筛选到预配置并发绑定的版本后,重新核对指标重合情况。
内容的提问来源于stack exchange,提问作者xiaokang lin
相关产品推荐
相关产品推荐


