Introduction

Provisioned concurrency reduces cold starts only for the exact version or alias it is attached to and only up to the amount of concurrency that was provisioned. Teams often assume that enabling it once removes all cold starts forever, but spillover traffic, new published versions, or heavy initialization code can still produce latency spikes.

Symptoms

  • Latency spikes still appear after enabling provisioned concurrency
  • ProvisionedConcurrencySpilloverInvocations is non-zero
  • New deployments reintroduce cold starts even though the alias name stayed the same
  • Init Duration appears in logs for some requests

Common Causes

  • Provisioned concurrency is attached to the wrong alias or an outdated version
  • Traffic exceeds the provisioned concurrency pool and spills over to on-demand execution
  • Initialization code outside the handler is still too heavy
  • Autoscaling for provisioned concurrency cannot ramp up fast enough for the traffic pattern

Step-by-Step Fix

  1. 1.Confirm provisioned concurrency is attached to the active alias
  2. 2.It must point at the exact alias or version receiving production traffic.
bash
aws lambda get-provisioned-concurrency-config \
  --function-name my-function \
  --qualifier prod
  1. 1.Verify the alias points at the intended version
  2. 2.New deployments can publish a fresh version while provisioned concurrency remains attached to the old one.
bash
aws lambda get-alias \
  --function-name my-function \
  --name prod
  1. 1.Check spillover and utilization metrics
  2. 2.If traffic exceeds the warm pool, the extra requests fall back to normal concurrency and may cold start.
bash
aws cloudwatch get-metric-statistics \
  --namespace AWS/Lambda \
  --metric-name ProvisionedConcurrencySpilloverInvocations \
  --dimensions Name=FunctionName,Value=my-function Name=Resource,Value=my-function:prod \
  --start-time 2026-04-10T07:30:00Z \
  --end-time 2026-04-10T08:30:00Z \
  --period 60 \
  --statistics Sum
  1. 1.Reduce heavy initialization and tune scaling
  2. 2.Large imports, heavy startup logic, and underprovisioned alias concurrency all make cold starts more likely even with the feature enabled.

Prevention

  • Always attach provisioned concurrency to an alias, not an assumed traffic path
  • Review alias-to-version routing on every deployment
  • Monitor spillover and latency, not just whether provisioned concurrency exists
  • Keep initialization work lean so warm capacity is actually effective