Graph
Cases3 cases
1 to 3 of 3
- Symptoms
On 24 March 2026 learn.mit.edu went down shortly after a regular release. An engineer reported the outage with a linked Sentry issue, and Sentry soon showed many 504 responses from the site.
- Trigger
A regular release deployed a query pattern change to the learning resource APIs that put an aggregation inside the main query.
- Root cause
- Component
- Contributing factor
- Detection
An engineer reported the outage with a linked Sentry issue, and Sentry showed many 504 responses. The RDS FreeStorageSpace metric showed that the database had used up its storage.
- Remediation
- Rolled back the release's query pattern change
- Deleted the read replica so the database could flush its buffered WAL files
- Terminated all active queries running longer than 10 minutes with pg_terminate_backend, after the backup finished and with guidance from AWS Support
- Action items
- Explore enabling enhanced analytics on the production Learn database
- Document rollback steps on the platform engineering documentation site
- Make easy rollback part of the new release management framework
- Alert on DiskQueueDepth for production databases without making the alert too noisy
- Alert when API and site response times are more than 30% above normal
- Run a gameday on an example production database outage
- Adopt Rootly for incident management, with an automatic channel and an automatic incident transcript
- Write an outage runbook: start a call, have the on-call engineer watch metrics until they return to baseline, and give one person the communications
- Put the query that terminates long-running queries, and a version that finds them for selective termination, into a production Postgres runbook
- Open an issue on redesigning the Learn Resource View Event model, which is only used for counts
- Use anonymised production data generation tools to bring RC up to production data volume, on separate infrastructure for load testing
- Change the view count to use a precomputed column
- Lessons
The change was reviewed by senior engineers and showed no problems locally or on RC, but data scale and load in production are very different, and nothing in the system's health showed that adding a COUNT aggregation would make disk usage explode.
IL-0571STORES reservation returned bursts of 504 errors when a smart-list query held a database process for over 20 minutesSTORES2024- Symptoms
About 20 minutes into a batch that rewrote the preset smart-list data of STORES 予約 (STORES reservation), an alert fired for a sudden rise in 504 errors (Gateway Timeout). The work had started a little after 03:00 UTC, and the metrics watched during it, such as web server response latency and the load of the writer database, had shown no large change.
- Trigger
The preset smart lists 初回予約の顧客 (first-reservation customers) and 要フォロー顧客 (customers needing follow-up), created more than a month earlier, were rewritten with new search parameters after the search specification changed, which switched them onto the new search query.
- Root cause
- Component
- Contributing factor
- Detection
An alert on a sudden increase in 504 errors (Gateway Timeout), about 20 minutes after the preset rewrite batch started.
- Action items
- Rework the database design so the inline-view search logic is no longer used
- Add a test that checks this API's EXPLAIN output for scans larger than expected
- Provide an environment where the timing of this logic can be measured easily
- Lessons
Rushing to meet the schedule led to both a failure that affected users and a later release. In a multi-tenant database an EXPLAIN that shows index use can still hide large scans, tests need the case where one query is fast and the next is slow, the metrics to watch during a data change are those of the instance that serves the affected queries, and metrics sent at the end of a request are lost for requests that never finish.
IL-0567Aurora MySQL behind Cookie Run: OvenBreak hit 100% CPU after a sales-ranking feature launch, and players could not playDevsisters2023- Symptoms
After further bug-fix deployments and reconnecting users on the launch day of the package sales ranking feature, a database alarm fired and the CPU of the Cookie Run: OvenBreak AWS Aurora MySQL database was at 100%. Database connections then failed, and players could not log in to or play the game.
- Trigger
The package sales ranking feature was deployed, and further bug-fix deployments followed that reconnected users; each server update left more servers with empty caches that ran the ranking query against the database.
- Root cause
- Component
- Contributing factor
- Detection
A database alarm fired, and the CPU graph of the Aurora MySQL database showed 100%.
- Remediation
- Put the game servers into maintenance
- Added a switch for the package sales ranking feature and turned the feature off, which restored the service
- Rewrote the ranking query to group products that share a sale start time and to drop the current-time condition
- Moved the ranking query to a scheduler server that runs it periodically and stores one shared cached result
- Turned the package sales ranking feature back on after both fixes
- Lessons
A heavy query combined with per-server caches in a distributed server setup caused a problem nobody expected, so the points likely to cause trouble need to be found in advance. During an outage, restoring the service comes before finding the cause, and a switch that turns a feature off, built in ahead of time, is a safety device that helps run a stable service. The online ALTER itself went well with Percona Toolkit and was used again for later schema changes.
These 3 cases involve Database. 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 cause1
Faulty deployment3 cases
- Component
- Contributing factor
- Organisation
IL-0510MIT Learn's RDS PostgreSQL ran out of storage after a release and learn.mit.edu returned 503s and 504s for hoursIL-0571STORES reservation returned bursts of 504 errors when a smart-list query held a database process for over 20 minutesSTORES2024IL-0567Aurora MySQL behind Cookie Run: OvenBreak hit 100% CPU after a sales-ranking feature launch, and players could not playDevsisters2023