Provisioned Throughput Exceeded & Exponential Backoff

Provisioned Throughput Exceeded Exception

  • ProvisionedThroughputExceededException
  • Your request rate is too high for the read/write capacity provisioned on your DynamoDB table
  • SDK will automatically retry the requests until successful
  • If you are not using the SDK you can:
    • Reduce request frequency
    • Use Exponential Backoff

What is Exponential Backoff?

  • Many components in a network can generate errors due to being overloaded
  • In addition to simple retries all AWS SDKs use Exponential Backoff
  • Progressively longer waits between consecutive retries
    • 50 ms, 100 ms, 200 ms...improved flow control
  • If after 1 minute this doesn't work, your request size may be exceeding the throughput for your read/write capacity
  • If your workload is mainly GET requests, may improve performance using DAX or elasticache
  • IF it is write, take a look at increasing write capacity

Exam Tips

  • If you see the ProvisionedThroughputExceeded Error, the number of requests is too high
  • Exponential Backoff improves flow by retrying requests using progressively longer waits
  • This is not just true for DynamoDB, Exponential Backoff is a feature of EVERY AWS SDK and applies to many services within AWS e.g. S3 Buckets, CloudFormation, SES
    • If you aren't using an SDK, you must handle exponential backoff yourself by changing request timing