The SCF platform provides concurrency management capabilities at the function granularity to allow you to flexibly control the concurrency of different functions.
Currently, SCF allows concurrency management at two levels: account-level concurrency quota and function-level reserved concurrency quota.
Account-Level concurrency quota |- Function-Level reserved concurrency quota
Provisioned concurrency is not included in the concurrency management capabilities; instead, it only serves as the ability to start instances in advance. Versions under the same function share the concurrency of the function.
Each account has a total concurrency quota limit at the region level. The default value is 128,000 MB or 64,000 MB. For more information, please see Quota Limits. The concurrency quotas between regions are independent of each other and don't affect each other.
By default, the account-level concurrency quota is shared by all functions in the current region. This means that at any specific time point, the sum of actual concurrently running instances of all functions can reach up to the concurrency quota of the account. Requests exceeding the concurrency quota will encounter the overrun error (432 ResourceLimitReached). You can submit a ticket to increase the account-level quota.
You can use the function's reserved quota to allocate the region-level concurrency to a certain function, so as to manage the concurrency of the function. In order to avoid the situation where functions with no reserved quota set cannot be invoked after the account-level quota is fully allocated, the SCF platform sets 12,800 MB of the account-level concurrency quota to be unallocable and only available for functions with no reserved quota set, as shown below:
Reserve quota is the concurrency management capability at the function level. When you set a reserved quota for a function, it will have the following two effects:
The reserved quota is the upper limit of the function concurrency quota. You can use this capability to manage the function concurrency and control the costs so as to avoid out-of-control costs. At the same time, you can also disable a function by setting its reserved quota to 0. Then, all requests for this function will encounter the concurrency overrun error.
Setting the function reserved quota will occupy the concurrency quota at the region level. If the unoccupied quota at the region level (region-level quota - reserved quotas allocated to other functions - 12,800 MB) is insufficient, it cannot be set.
You can set the desired reserved quota for a function in the following steps:
If you no longer use reserved quota, you can delete it. After the deletion, the function will share the concurrency quota at the account level with other functions.
Deleting the reserved quota and setting the reserved quota to 0 are different configurations.
- Deleting reserved quota: the function does not have a dedicated quota and uses the shared quota in the region. The upper limit is subject to the usage of the shared quota.
- Setting reserved quota to 0: both the function's dedicated quota and concurrency upper limit are 0, so the function cannot run and stops responding to triggering events.