Graph
Cases4 cases
1 to 4 of 4
- Symptoms
From 7:30 AM PST on 7 December 2021, AWS services in us-east-1 that communicate between AWS's internal network and its main network saw rising latency and errors. The AWS operations teams lost real-time monitoring data at once, and the first thing found in the logs was elevated internal DNS errors.
- Trigger
At 7:30 AM PST an automated activity that scales the capacity of one AWS service hosted in the main AWS network triggered unexpected behaviour from a large number of clients inside the internal network.
- Root cause
- Component
- Contributing factor
- Detection
The congestion immediately cut off real-time monitoring data for the AWS operations teams, who turned to logs and first identified elevated internal DNS errors.
- Remediation
- Moved internal DNS traffic away from the congested network paths
- Isolated the top sources of traffic onto dedicated network devices
- Disabled some heavy network traffic services, including EventBridge event delivery
- Brought additional networking capacity online
- Disabled the automated scaling activities that triggered the event
- Action items
- Keep the triggering scaling activities off until all remediations are deployed
- Fix the latent issue that kept networking clients from backing off
- Deploy network configuration that protects the affected networking devices in a similar congestion event
- Keep API Gateway servers healthy when the internal network is unavailable and speed up their recycling
- Release a new Service Health Dashboard that makes service impact easier to understand
- Run the support system actively across multiple AWS regions
- Symptoms
At 5:15 AM PST on 25 November 2020, alarms fired for errors on putting and getting Amazon Kinesis records in the Northern Virginia (US-EAST-1) Region. From the same time CloudWatch, which processes metric and log data through Kinesis Data Streams, and CloudWatch Events and EventBridge returned more errors.
- Trigger
A relatively small addition of capacity to the Kinesis front-end fleet, made between 2:44 AM and 3:47 AM PST.
- Root cause
- Component
- Contributing factor
- Detection
Alarms for errors on putting and getting Kinesis records fired at 5:15 AM PST, and the teams began reviewing logs.
- Remediation
- Removed the newly added front-end capacity
- Added a configuration so front-end servers load bootstrap data from the authoritative metadata store instead of neighbouring servers
- Restarted the front-end fleet gradually, a few hundred servers per hour from 10:07 AM PST
- Added Cognito capacity to buffer more calls to Kinesis
- Deployed a change that reduced Cognito's dependency on Kinesis
- Mitigated the memory contention on the Lambda invocation hosts
- Informed customers through the backup Service Health Dashboard tool, the Personal Health Dashboard and a global banner
- Action items
- Move the Kinesis front-end to larger CPU and memory servers so fewer servers, and fewer threads per server, are needed
- Add fine-grained alarming for thread consumption
- Finish testing a higher operating system thread count limit
- Greatly improve the cold-start time of the front-end fleet
- Move the front-end server cache to a dedicated fleet
- Move a few large AWS services such as CloudWatch to a separate, partitioned front-end fleet
- Accelerate the cellularization of the front-end fleet to match the back-end
- Change the Cognito webservers so they sustain Kinesis API errors without exhausting their buffers
- Keep 3 hours of metric data in the CloudWatch local metrics data store, first in US-EAST-1 and then globally
- Train support engineers regularly on the backup tool for posting to the Service Health Dashboard
- Lessons
In the Kinesis front-end, the number of threads each server keeps grows directly with the number of servers in the fleet, so adding servers can push every server past an operating system limit at the same time. AWS sees cellularization of the front-end, already done for the back-end, as the way to keep the shard-map cache within a tested and operated range and to guard against unknown scaling limits.
- Symptoms
From 9:37AM PST on February 28th, 2017, Amazon S3 in the Northern Virginia (US-EAST-1) Region could not serve requests. AWS services in the region that store data in S3 failed with it, including the S3 console, new Amazon EC2 instance launches, Amazon EBS volumes that needed data from an S3 snapshot, and AWS Lambda.
- Trigger
While debugging an S3 billing system that was progressing more slowly than expected, an authorized S3 team member followed an established playbook to remove a small number of servers from one S3 subsystem used by the billing process, and entered one input of the command incorrectly.
- Root cause
- Component
- Contributing factor
- Remediation
- Restarted the index subsystem, which served GET, LIST and DELETE again from 12:26PM PST
- Restarted the placement subsystem after the index subsystem worked, restoring PUT by 1:54PM PST
- Action items
- Change the capacity removal tool to remove capacity more slowly
- Add safeguards that stop capacity removal when it would take a subsystem below its minimum required capacity
- Audit other operational tools for similar safety checks
- Improve the recovery time of key S3 subsystems and start the planned further partitioning of the index subsystem into cells now
- Run the SHD administration console across multiple AWS regions
- Symptoms
Early on Sunday 20 September 2015, the error rate of customer requests to Amazon DynamoDB in the US-East Region rose far beyond any level of the previous 3 years by 2:37am PDT and settled at about 55%. Some other AWS services in the region that depend on DynamoDB were affected as well.
- Trigger
At 2:19am PDT a brief network disruption affected a portion of DynamoDB's storage servers, and they all requested their membership data from the metadata service at the same time.
- Root cause
- Component
- Contributing factor
- Detection
For the errors that remained after the main recovery, a growing number of customer support cases on Monday about tables stuck in the updating or deleting stage and higher than normal error rates showed that the low overall error rate was hitting some customers hard.
- Remediation
- Paused requests to the metadata service, which cut the retries and relieved its load
- Added significant capacity to the metadata service once it could answer administrative requests
- Turned requests to the metadata service back on and returned storage servers to the customer request path
- Restored a metadata partition that was still not taking its full traffic, ending the remaining errors on Monday
- Action items
- Significantly increased the capacity of the metadata service, which AWS had already done by the time of the summary
- Add stricter monitoring on performance dimensions such as membership size, to plan capacity ahead
- Reduce the rate at which storage nodes request membership data
- Lengthen the time allowed to process membership queries
- Segment DynamoDB into many metadata service instances, each serving only part of the storage server fleet
- Change SQS metadata caching so send and receive keep working without long access to the metadata table
- Partition work across the Auto Scaling servers to process a backlog of scaling jobs in parallel
- Prune older scaling activities that have been superseded
- Increase the capacity available to process scaling activities
- Change CloudWatch caching of DynamoDB group membership data to refresh only the smallest set of metrics
- Deliver CloudWatch metrics faster through write-through caching
- Roll out the shorter timeout on the DynamoDB-dependent API call in Console login
- Lessons
A low overall error rate can hide disproportionately high error rates for a few customers, and AWS should have posted to the dashboard sooner. A call that does not need to succeed, like the DynamoDB-dependent API call in Console login, should fail quickly instead of blocking on a very long timeout. Splitting the metadata service into many instances, each serving part of the fleet, is meant to contain the impact of software, capacity or infrastructure failures.
These 4 cases involve Serverless function platform and Cloud block storage. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause3
Software defect1 case
- Contributing factor
- Organisation
Capacity exhaustion2 cases
- Contributing factor
- Organisation
Operator error1 case
- Contributing factor
- Organisation