🌐
Medium
aws.plainenglish.io › lambda-provisoned-concurrency-vs-snapstart-when-to-use-what-9736501e77a5
Lambda Provisoned Concurrency vs SnapStart — When to use what | by Abhijit Jadhav | AWS in Plain English
November 11, 2024 - Cost-Sensitive Applications with Latency Requirements: SnapStart allows you to reduce cold start delays without incurring the higher costs of Provisioned Concurrency, making it ideal for applications that need fast response times but also have ...
🌐
Amazon Web Services
docs.aws.amazon.com › aws lambda › developer guide › improving startup performance with lambda snapstart
Improving startup performance with Lambda SnapStart - AWS Lambda
SnapStart does not support provisioned concurrency, Amazon Elastic File System (Amazon EFS), or ephemeral storage greater than 512 MB.
🌐
Amazon Web Services
docs.aws.amazon.com › aws lambda › developer guide › understanding lambda function scaling
Understanding Lambda function scaling - AWS Lambda
Using provisioned concurrency incurs additional charges to your account. If you're working with the Java 11 or Java 17 runtimes, you can also use Lambda SnapStart to mitigate cold start issues at no additional cost. SnapStart uses cached snapshots of your execution environment to significantly ...
🌐
Reddit
reddit.com › r/aws › lambda provisioned concurrency
r/aws on Reddit: Lambda provisioned concurrency
July 3, 2023 -

Hey, I'm a huge serverless user, I've built several applications on top of Lambda, Dynamo, S3, EFS, SQS, etc.

But I have never understood why would someone use Provisioned Concurrency, do you know a real use case for this feature?

I mean, if your application is suffering due to cold starts, you can just use the old-school EventBridge ping option and it costs 0, or if you have a critical latency requirement you can just go to Fargate instead of paying for provisioned concurrency, am I wrong?

🌐
SUDO Consultants
sudoconsultants.com › home › blog › advanced lambda performance: provisioned concurrency vs. snapstart
Advanced Lambda Performance: Provisioned Concurrency vs. SnapStart - SUDO Consultants
February 4, 2025 - Applications with predictable traffic patterns. Real-time processing systems where delays are unacceptable. SnapStart is a newer feature designed specifically for Java-based Lambda functions.
🌐
AWS re:Post
repost.aws › questions › QUV2CpC2ykS_myfeSxKYpzCA › aws-lambda-snapstart-slow-first-request
AWS Lambda + SnapStart - Slow First Request | AWS re:Post
May 28, 2023 - If you need predictable function start times for your workload, Provisioned Concurrency is the recommended solution to ensure the lowest possible latency. This feature keeps your functions initialized and warm, ready to respond in double-digit ...
🌐
Lumigo
lumigo.io › home › aws lambda cold starts are about to get faster
AWS improves Lambda cold starts with SnapStart release
June 25, 2024 - In practice, it drives you towards having monolithic functions so you can consolidate and minimize the number of provisioned concurrencies you need to use. This runs counter to Lambda best practices which recommend having small, single-purposed functions. The newly announced SnapStart feature takes another big leap towards cutting down cold start duration for Java functions.
🌐
DEV Community
dev.to › aws-builders › killing-cold-starts-with-lambda-snapstart-1h77
Killing cold starts with Lambda SnapStart - DEV Community
August 14, 2025 - SnapStart vs Provisioned Concurrency (PC) • SnapStart: Pay per snapshot cache/restore; great for many bursty workloads; no EFS/PC. • PC: Always-warm environments; extra charges constantly; works with EFS; deterministic lowest-latency.
🌐
Elasticscale
elasticscale.com › blog › aws-lambda-snapstart-reducing-cold-start-times-with-firecracker
AWS Lambda SnapStart: Reducing Cold Start Times with Firecracker | ElasticScale
Provisioned Concurrency is more expensive but guarantees instant responses, whereas SnapStart provides significant improvements at a lower cost.
Call   *
Address   Jelmersmeer 9, 8448 RR, Heerenveen
🌐
Medium
medium.com › @connect.hashblock › how-i-solved-cold-starts-in-aws-lambda-with-provisioned-concurrency-and-snapstart-c909f0d86a1e
How I Solved Cold Starts in AWS Lambda with Provisioned Concurrency and SnapStart | by Hash Block | Medium
July 23, 2025 - Despite having optimized the code, slimmed the package, and tuned timeouts, the cold start monster kept creeping in — especially during spiky traffic hours. For a product where users expect a sub-100ms response time, even a single 2-second delay meant friction. That’s when I decided to go deeper. The answer? Provisioned Concurrency and SnapStart.
Find elsewhere
🌐
Symphonia
blog.symphonia.io › posts › 2023-01-11_snapstart-what-why
AWS Lambda SnapStart - What, and Why | The Symphonium
January 24, 2022 - First of all, SnapStart is only for JVM Lambda Functions, and specifically only for JVM Lambda functions using the standard AWS Java 11 Runtime (not Java 8, or custom runtimes.) Further, SnapStart can only be used with x86 architecture, and it does not support use of provisioned concurrency, EFS, ...
🌐
NumericaIdeas
numericaideas.com › home › blog › lambda performance optimization strategies
Lambda Performance Optimization Strategies
January 14, 2024 - SnapStart is a performance optimization option that helps to reduce the initialization time of Lambda functions at no additional costs. Fully powered by AWS, Provisioned Concurrency keeps your function warm, and ready to respond in double-digit ...
🌐
Form.io
mindbowser.com › home › blogs › aws lambda snapstart- the quick & easy way to get started with serverless computing
AWS Lambda Snapstart: Your Quick Guide to Serverless Computing
March 17, 2024 - Unlike on-demand Lambda functions, all setup activities happen ahead of invocation (including container start, bootstrap runtime and running the initialization code). Provisioned Concurrency adds cost to Lambda service.
🌐
DZone
dzone.com › testing, deployment, and maintenance › deployment › aws lambda snapstart
AWS Lambda SnapStart
June 22, 2023 - Provisioned concurrency adds cost to Lambda service. Reduce the init code execution time by utilizing some design patterns (for example, connection pool-like libraries). AWS Lambda SnapStart: New feature introduced recently for Java 11 Corretto ...
🌐
Pump
pump.co › home › blog › understanding the aws lambda pricing and costs
Understanding the AWS Lambda Pricing and Costs
Logs of the activity suggest these ... such as SnapStart and Lambda@Edge. Using cold start optimization, SnapStart employs pre-initialized snapshots ......
Top answer
1 of 6
25

tl;dr:

  • Initialization/cold start latency can come from two sources:
    1. Lambda initialization (i.e. AWS provisioning the instance -- you have limited control over this, but provisioned concurrency eliminates this concern completely)
    2. Static initialization (i.e. your code getting resources initialized: loading libraries, connecting to databases/services, etc. -- you have complete control over this, but provisioned concurrency doesn't eliminate this concern completely; you must still make sure all of this happens during the initialization phase/outside of your handler code)
  • Make use of the Lambda best practices, such as persistent connections. This ensures clients won't have to incur the latency of these connections when invoking your Lambda (which could be misinterpreted for a cold start).
  • To fully understand, read the entire Lambda Performance Optimization Guide, especially the Lambda Execution Environments. It's not too long!

We're experiencing the same issue, and haven't found any way around it. In the end, Lambda instances are transient, so there's no guaranteed continuous uptime (even with provisioned concurrency).

What provisioned concurrency does give you though is the guarantee of a number of running instances - although these can be swapped with other instances at any point in time (and incur a cold start when that happens). The frequency of the swaps seems pretty arbitrary, and I assume, completely up to AWS.

EDIT: We eventually realized this isn't an issue at all! It just has to do with the nature of how provisioned concurrency functions:

  • With provisioned concurrency, initialization/cold starts still happen, but they happen before the Lambda is made available to be invoked.

    • You can tell this is the case when setting provisioned concurrency to 1 and looking at the logs -- the new instance will be initialized while the previous instance is still being invoked, and then the new instance will start being invoked while the previous instance is discarded.
    • Which means that effectively, clients are not experiencing these cold starts! It's just happening in the background.
  • However, clients could still experience another form of cold start if the lambda function doesn't makes good usage of the static initialization -- which is often slower than the Lambda initialization itself:

In our analyses of Lambda performance across production invocations, data shows that the largest contributor of latency before function execution comes from INIT code.

All that is summed up pretty well by the images below (from the Lambda Performance Optimization Guide).

  • The first two are without provisioned concurrency:

  • The other two are with provisioned concurrency enabled:


A good way to tell if Lambda is indeed doing a cold start is to look at the logs in CloudWatch. Each request should have a REPORT log that looks like this:

REPORT RequestId: f840a316-cf35-42ec-8f4d-c03a6cde9192  Duration: 368.80 ms Billed Duration: 369 ms Memory Size: 128 MB Max Memory Used: 93 MB  Init Duration: 3569.10 ms

If you see Init Duration at the end of the log, then it is indeed a cold start. However, with provisioned concurrency, this init duration happened before the Lambda was invoked.

Also, a new CloudWatch log stream seems to be created each time AWS spins up a new Lambda "instance" - which incurs a cold start, confirmed by the fact that the first request of each log stream has an Init Duration. So just taking a look at the "First event time" column will show you all your cold starts (the column can be added via the preferences/gear icon).

This is further confirmed in the Lambda Performance Optimization Guide:

Initialization code is run more frequently than the total number of invocations. Since Lambda is highly available, for every one unit of Provisioned Concurrency, there are a minimum of two execution environments prepared in separate Availability Zones. This is to ensure that your code is available in the event of a service disruption. As environments are reaped and load balancing occurs, Lambda over-provisions environments to ensure availability. You are not charged for this activity. If your code initializer implements logging, you will see additional log files anytime that this code is run, even though the main handler is not invoked.


It can also be a good idea to look at the START log, to make sure that the intended version is being called (the one with provisioned concurrency configured):

START RequestId: f840a316-cf35-42ec-8f4d-c03a6cde9192   Version: 15

It's especially important to make sure that the version is not $LATEST (which cannot benefit from provisioned concurrency):

Each version of a function can only have one provisioned concurrency configuration. This can be directly on the version itself, or on an alias that points to the version. Two aliases can't allocate provisioned concurrency for the same version. Also, you can't allocate provisioned concurrency on an alias that points to the unpublished version ($LATEST).

2 of 6
3

Are you sure these are really cold start latencies rather than problem with database connection? Have you think of using X-Ray for tracing? You could wrap the instruction you want to mesure inside a segment.

Here an example application.

🌐
DEV Community
dev.to › vkazulkin › measuring-java-11-lambda-cold-starts-with-snapstart-part-1-first-impressions-30a4
AWS Lambda SnapStart - Part 1 Initial measuring of Java 11 Lambda cold starts - DEV Community
December 5, 2023 - The list of limitations is quite big and worth reading. SnapStart does not currently support provisioned concurrency, the arm64 architecture, Amazon Elastic File System (Amazon EFS), AWS X-Ray, or ephemeral storage greater than 512 MB.
🌐
Medium
serverlesscorner.com › improving-cold-starts-using-lambda-snapstart-9d26577cca60
Does AWS Lambda SnapStart make sense? | by Haiko van der Schaaf | Medium
July 15, 2025 - On a trigger, the Lambda function goes to different phases. The first is the INIT phase. When you enable Lambda SnapStart, Lambda saves a snapshot of the memory and disk state of the initialized execution environment resulting from the INIT phase and uses that for SnapStart functions.
🌐
Quintagroup
quintagroup.com › blog › aws-lambda-provisioned-concurrency
AWS Lambda: Why Provisioned Concurrency is better than On-Demand Lambda — Quintagroup
June 1, 2023 - Provisioned Concurrency aims at solving 2 sources of cold-start latency. Firstly, the set-up of the execution environment occurs amid the provisioning process instead of the execution process.