Skip to main content
awsdown
criticalDynamoDBus-east-1

The 2015 DynamoDB Outage: A Metadata Service Under Its Own Load

AWSDown Research · Incident analysisPublished April 8, 2026Updated April 8, 20268 min read
A data center corridor lined with cabling

Timeline

  1. Trigger

    A brief network disruption in us-east-1 causes some DynamoDB storage servers to lose their membership and re-request their partition assignments from the internal metadata service, all at once.

  2. Impact

    Because newly launched Global Secondary Indexes had made membership requests larger and slower, the metadata service cannot process the surge within the timeout. Storage servers that fail to confirm membership remove themselves from service.

  3. Cascade

    DynamoDB error rates climb sharply in us-east-1. Services that depend on DynamoDB internally, including parts of EC2 Auto Scaling, SQS, and the console, begin to degrade.

  4. Mitigation

    AWS pauses metadata processing to break the retry loop, adds capacity to the metadata service, and reduces the size of membership requests before carefully bringing storage servers back.

  5. Resolved

    DynamoDB error rates return to normal and dependent services recover. AWS commits to further isolating and hardening the metadata service.

Root cause

DynamoDB spreads your tables across many storage servers, and every storage server has to know which partitions it owns. It learns that from an internal metadata service, and it periodically re-confirms its membership. Normally this is quiet background chatter. On September 20, 2015, a short network disruption in us-east-1 knocked a batch of storage servers out of membership at the same instant, and they all turned to the metadata service to get their assignments back.

The reason this became an outage rather than a blip is a change that had landed quietly beforehand. Global Secondary Indexes had grown table membership data, so each membership request now carried more information and took longer to process. Under the sudden surge, the metadata service could not answer everyone before their timeouts expired. A storage server that cannot confirm its membership takes itself out of service to avoid serving stale data, which is the safe choice individually, but collectively it meant more servers dropping out, retrying, and piling more load onto the exact service that was already saturated. It was a retry storm aimed at a metadata bottleneck.

The dangerous property here is that the trigger and the amplifier were separate events that only became lethal together. The network blip alone would have been forgettable. The larger membership requests alone would have been fine on a normal day. It took the two coinciding, a synchronized re-request the moment those requests had become slow and heavy, to tip the metadata service past the point where it could catch up. Breaking that loop required AWS to pause metadata processing entirely, which is a drastic step, so that the flood of retries would stop and the service could work through a backlog on its own terms before storage servers were allowed back.

Business impact

DynamoDB by 2015 was load-bearing not just for customers but for AWS itself. Parts of EC2 Auto Scaling, SQS, and the console stored state in DynamoDB, so a DynamoDB problem became an EC2 and SQS problem within the region. Customer apps that treated DynamoDB as their always-available primary store saw write and read errors for hours, and many discovered they had no fallback because they had trusted the "fully managed, highly available" label as if it meant "cannot fail."

The customer stories from that day are a catalog of missing degradation paths. Applications that returned a hard error to end users whenever a DynamoDB write failed had no graceful mode: every failed call became a failed user action. Teams whose Auto Scaling depended on the same region could not add capacity to absorb the retries their own clients were generating, so they were squeezed from both sides. The lesson that stuck was not "DynamoDB is unreliable," because on any ordinary day it is extraordinarily reliable. The lesson was that even an extraordinarily reliable dependency will have a bad hour eventually, and an application that has never decided what to do during that hour will decide badly in real time. The event is a direct ancestor of the 2020 Kinesis outage and the 2025 DynamoDB DNS event: a shared internal service, a synchronized surge, and a cascade into features that looked unrelated.

Prevention and lessons

  1. Assume your managed database can have a bad hour. Even a five-nines service is not five-nines every month. Decide in advance how your app behaves when the primary store returns errors: shed load, serve stale reads, or queue writes for later.
  2. Cap and jitter your retries. The failure amplified itself through synchronized re-requests. Any client that retries a failing dependency must use backoff, jitter, and a concurrency limit, or it becomes part of the outage. See the DR checklist.
  3. Watch for scale creep in shared services. The Global Secondary Index change was healthy on its own, but it quietly raised the cost of a routine operation until a surge could no longer be absorbed. Track the size and latency of your hot-path metadata calls over time.
  4. Turn five hours of errors into a claim. Elevated-error outages are claimable when you can show sustained failure rates. Model it on the SLA credit calculator, follow the credit playbook, and let our sponsor Next Signal capture the error-rate evidence automatically.

SLA credit eligibility

Yes - roughly five hours of elevated errors breached the 99.99% monthly target. The DynamoDB SLA allows only minutes of monthly error before dropping below 99.99%. Five hours of elevated errors puts affected accounts into the credit tiers, though the exact tier depends on your measured per-request error rate, so keep request logs.

Work out what your bill was owed with the independent AWS SLA credit calculator, or automate breach detection with Next Signal (sponsor). For the full claim process, see the AWS credit-recovery playbook.

Questions about this outage

What caused the September 2015 DynamoDB outage?

A brief network disruption made many DynamoDB storage servers re-request their partition assignments from an internal metadata service simultaneously. New Global Secondary Indexes had recently made those membership requests much larger and slower, so the metadata service could not process the surge in time. Storage servers that could not confirm membership removed themselves, which pushed even more retry load onto the overwhelmed metadata service.

Why did a DynamoDB outage affect EC2 and SQS?

Several AWS services store their own state in DynamoDB. Portions of EC2 Auto Scaling, SQS, and the console read and write DynamoDB internally, so when DynamoDB degraded in us-east-1 those features degraded too. It is the same hidden-dependency pattern seen in later AWS incidents where one internal data store sits under many services.

How long did the 2015 DynamoDB outage last?

Major impact ran roughly from 09:37 UTC to about 15:00 UTC on September 20, 2015, in us-east-1, so around five hours. Recovery was gradual because AWS had to relieve the metadata service before safely returning storage servers.

What did AWS change after the 2015 DynamoDB outage?

AWS added significant capacity to the metadata service, reduced the size of membership requests so a re-request storm is far less punishing, and instrumented the service more heavily. It also reinforced the principle that a shared internal service should degrade gracefully under a retry surge rather than collapse.

Next time, hear it from us first

Instant alerts when AWS incidents are detected - services and regions included.

Get outage alerts

More post-mortems

ELB

The 2012 ELB Outage: The Deleted State That Ruined Christmas Eve

A developer running maintenance accidentally deleted Elastic Load Balancing state data in us-east-1. Without that state, load balancers could not be scaled or modified correctly, so a growing share of them degraded over Christmas Eve, most visibly taking Netflix offline for millions of viewers.

EBS

The Great AWS Outage of 2011: When EBS Re-Mirrored Itself to Death

A network change accidentally routed high-volume EBS traffic onto a low-capacity network in one us-east-1 Availability Zone. Volumes lost their mirrors and tried to re-mirror all at once, exhausting capacity and creating a re-mirroring storm that stuck EBS and EC2 for days.

Kinesis

The 2020 Kinesis Outage: One Service That Broke Half of AWS

A routine capacity addition pushed the Kinesis front-end fleet past an operating-system thread limit in us-east-1. Because Kinesis quietly powers CloudWatch, Cognito, and much of AWS itself, the failure rippled into dozens of services for most of a business day.