Apply Little's law to size Lambda concurrency against the 1000-per-region account limit, with reserved and provisioned capacity.
Concurrency is not a rate — it is the number of environments in flight, which Little's law gives as arrival rate multiplied by service time. A 100 ms function at 500 req/s needs only 50 environments, while a 5-second function at the same rate needs 2,500 and will be throttled by the default 1,000 account limit. Reserved concurrency both guarantees and caps a function, so setting it too low turns a shared-pool problem into a hard ceiling. Throttles surface as HTTP 429 and TooManyRequestsException rather than as latency, so a function that looks healthy in its duration metrics can be silently dropping a slice of traffic once concurrency crosses the limit.
Lambda Concurrency
concurrency = requests per second × average duration in seconds (Little's law); peak concurrency = steady concurrency × peak-to-average ratio.
Throughput ceiling
maximum sustainable rate = effective concurrency limit ÷ average duration in seconds.
concurrency = requests per second × average duration in seconds (Little's law); peak concurrency = steady concurrency × peak-to-average ratio. Concurrency is not a rate — it is the number of environments in flight, which Little's law gives as arrival rate multiplied by service time. A 100 ms function at 500 req/s needs only 50 environments, while a 5-second function at the same rate needs 2,500 and will be throttled by the default 1,000 account limit. Reserved concurrency both guarantees and caps a function, so setting it too low turns a shared-pool problem into a hard ceiling.
Throttles surface as HTTP 429 and TooManyRequestsException rather than as latency, so a function that looks healthy in its duration metrics can be silently dropping a slice of traffic once concurrency crosses the limit.
This calculator takes 6 inputs: Steady request rate, Average duration, Peak-to-average ratio, Account concurrency limit, Reserved concurrency for this function, Provisioned concurrency configured. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Reserved concurrency carves a guaranteed slice out of the account pool and simultaneously caps the function at that number — it costs nothing. Provisioned concurrency pre-initializes a set number of environments so requests skip the cold start, and it is billed per second for as long as it is configured.