The Amazon Web Services Lambda is a cloud service which responds to all the actions within your application, it inspects all the actions taken in your application and responds by deploying the user-defined codes. Your AWS account can respond to 1000 requests from your application user at the same time, which means your account has 1000 default concurrent executions. You can set a limit of concurrency for all your lambda functions which will allow you to reserve a certain number of your account’s total concurrency level for that specific function and this limit will help you specify the number of functions that can be invoked at a time.
Working of Lambda Function and Lambda Throttling
Each request triggers an AWS lambda to launch and process to carry out a certain function and every AWS user gets 1000 unserved concurrency limit for an account when this limit is reached then lambda will not invoke any functions and throttle it instead. Throttling is simply an intentional rejection of a request by lambda and to not carry out that function. All the lambda functions of an account can use the pool of 1000 unreserved concurrent executions. If one or more lambda functions receive 1000 request separately or in total, then all the lambda executions will be run through the common pool of unreserved concurrent executions and any future request of lambda functions would be declined and you can no longer entertain any further requests. Here, it becomes necessary to prevent further requests from being unnecessary throttled.
How to Prevent Lambda Function Throttling?
Lambda function throttling can be prevented by a few techniques, it can be done by requesting a higher limit of concurrent executions for your AWS account. You can increase your account’s concurrency limit at no cost, this can prevent your application from lambda function throttling but cannot eliminate it. Elimination of lambda function throttling can only be done by increasing your account’s limit to a very high number of concurrent executions which can cost you a lot. It can also be done by reserving some executions per function, you can reserve a certain amount of your account’s total concurrency limit for a specific function. This will allow your reserved lambda executions to be untouched by other functions and will be only used by that particular function, preventing throttling of requests due to exceeding your account’s limit.
Other reasons for setting a concurrency limit
- Cost and Security: Someone can accidentally or intentionally make a huge number of function requests to your system, which can result in costing you more or invasions in your systems and data loss.
- Performance: A large number of functions being performed at the same time can affect your performance and slow down your application.
- Creating an Off switch: This helps you in shutting down your systems and allowing zero traffic through your processes.
The AWS Lambda inspects all the actions taking place in your application and responds through your user-defined codes, all the requests made by your application users are entertained by this lambda function. Your account has a limit of 1000 concurrent executions can entertain 1000 requests at a time and perform those functions, due to this limit the exceeding number of requests get automatically declined by your lambda which is known as lambda function throttling. To prevent this throttling, either you can increase your account’s concurrent limit or you can reserve a certain number of total concurrent executions of your account for a specific function. Reserving certain concurrency for a function will help you from throttling of that lambda function as it can use the untouched executions and carry out that function.
Frequently Asked Questions (FAQs)
When the number of requests exceeds your account’s concurrent execution limit, the lambda function begins to decline all further requests in your applications by all your users. This can slow down your application, affecting its performance and creating problems for your users in accessing the functions of your application.
When you reserve a certain number of executions for a certain function, then those lambda executions are left untouched by other functions and your specific function can use those concurrent executions at any time and prevent throttling of that particular function.
In your AWS account you can navigate to your lambda function, click on the configuration link and find the concurrency box. There you can set the reserved concurrent executions. This is a simple and effective solution to prevent your lambda function from throttling.
Elimination of throttling can cost you a lot, as you will need to increase your account’s concurrency limit to a very large number. Still, there is no guarantee that you will not have to face this problem again as all of this depends on the number of users of your application.
You can simply request to AWS to increase your account’s concurrency limit, and it can be increased from a default limit of 1000 to 5000 at no cost.