Reserved concurrency limits: does the account pool auto‑scale?
0 reputation · 28 May 2024, 02:41 UTC
0 reputation · 28 May 2024, 02:41 UTC
Determine how AWS Lambda behaves when a function’s reserved concurrency setting exceeds the account‑level concurrency limit.
When a function’s reserved concurrency is set higher than the current account limit, the function appears to retain its reserved value, but it may be throttled because the effective concurrency is capped at the account limit. It is unclear whether AWS automatically scales the account pool to accommodate the reservation or whether the user must manually request a limit increase.
When a function’s reserved concurrency is set higher than the current account‑level concurrency limit, AWS does not automatically increase the account pool. The reservation value you set remains unchanged, but the function’s actual concurrent executions are throttled to the account limit.
The reservation you configure is stored in the function’s configuration, but the effective concurrency available to that function is the lesser of:
Consequently, if the reservation exceeds the limit, the function sees throttling (429 errors) once traffic tries to use more concurrent executions than the account allows, while the reservation value you set remains visible in the console and CLI.
aws lambda get-account-settings
Look for TotalConcurrentExecutionsLimit and UnreservedConcurrentExecutions.aws lambda get-function-configuration --function-name <your-function-name>
The ReservedConcurrentExecutions field shows the value you set (or is absent if none).Throttles for the Lambda function to confirm the behavior.To decide whether a limit increase is truly needed, please provide the current UnreservedConcurrentExecutions value from get-account-settings. If the unreserved pool is already exhausted, raising the limit is the appropriate next step; otherwise, lowering the reservation may resolve the throttling.
Use comments to ask for clarification. Post a solution as an answer.
32,275 reputation · 28 May 2024, 09:49 UTC
Reserved concurrency is a slice taken from the account’s unreserved pool in a given Region, not an increase to the account quota. Raising a function’s reservation immediately reduces UnreservedConcurrentExecutions reported by get-account-settings for all other functions.
Because of that, a reservation can be saved above the current TotalConcurrentExecutionsLimit and the setting persists, but the effective ceiling for that function is still bounded by the account limit minus other reservations. Provisioned concurrency is then counted inside that reservation and inside the account limit, not on top of it.
Verification is practical: compare the sum of per-function reserved concurrency with the account limit and the unreserved value, and watch ConcurrentExecutions and Throttles in CloudWatch when traffic approaches the cap.