Search code examples
node.jsamazon-web-servicesaws-lambdarate-limiting

AWS Lambda TooManyRequestsException: Rate Exceeded


When attempting to execute an Amazon Web Services (AWS) Lambda function (many times) we were seeing the error:

AWS Lambda TooManyRequestsException: Rate Exceeded

How do we resolve this?


Solution

  • As noted by Michael, this is the error message you will see when you reach the documented default "safety" limit of 100 concurrent invocations:

    "AWS Lambda has a default safety throttle of 100 concurrent executions per account per region. If you wish to submit a request to increase the throttle of 100 concurrent executions you can visit our Support Center..."

    The solution was to open a support ticket providing the following info:

    Limit increase request 1 
    Service: Lambda 
    Region: EU (Ireland) 
    Limit name: concurrent requests (average duration * average TPS) 
    New limit value: 2000
    

    And then in the body of the ticket/request try to estimate your usage pattern:

    Expected average requests per second: 200 
    Expected peak requests per second: 2000 
    Expected function duration: 2 seconds 
    Function memory size: 1000mb 
    Invocation Type: Request-response 
    Event Source: Api Gateway & Lambda<->Lambda
    

    It can take a while to get a response from AWS Support unless you are paying for premium support, so its best to load test your app during development/staging and request to increase concurrent invocations before you launch your app!

    In our case it took 45 hours from initial support request to get the invocation limit increase. aws-lambda-limits-increase-request aws-lambda-limits-request-sorted

    The AWS support people are lovely, it just took what felt like ages (almost two days!) to get the service level increase, which would have been fatal if our launch had been public!