Cases8 cases
1 to 5 of 8
IL-0553CircleCI's orchestration database filled its transaction log volume, and no workflows or jobs started for 50 minutesCircleCI2026- Symptoms
On 6 October 2026 CircleCI pipelines were slow to be created and workflows and jobs were slow to start, in short bursts from 13:30 UTC and continuously from 15:30 UTC. From 15:48 to 16:38 UTC no workflows or jobs started at all, and pipelines triggered from 16:02 UTC failed.
- Trigger
Around 12:40 UTC, on top of the regular workload, anti-wraparound autovacuum runs on several of the largest tables of the orchestration service's database began writing transaction logs faster than the database could archive them.
- Root cause
- Component
- Contributing factor
- Detection
Monitoring raised short alerts about errors in the orchestration service from 10:02 UTC, each clearing on its own. At 13:35 the alerts came back together with related alerts from several other services, and after they returned around 14:30 and engineers investigated further, an incident was declared at 14:54 UTC.
- Remediation
- Changed the anti-wraparound autovacuum settings to help it finish faster
- Moved the transaction logs onto the database's main storage volume, which took the database offline from 15:47 to 16:38 UTC
- Changed database parameters to stop further maintenance runs from starting
- Changed a database setting at 18:19 UTC to cut the time each write spent waiting on storage
- Added database and server capacity to the systems that hand jobs to the execution fleet to clear the backlog faster
- Action items
- Alert on how full the transaction log volume is and on how far archiving has fallen behind
- Alert on the database maintenance that drives transaction log growth
- Review all alerts so that noisy or sensitive alerts do not hide real issues
- Tune how often and how aggressively autovacuum runs on the database
- Track the size of the largest tables over time so they stay within safe limits
- Remove the single transaction log bottleneck by splitting the service across several database instances or moving it to a distributed database
- Make CircleCI's systems wait for the orchestration service to recover instead of failing jobs after retrying
- Include specific impact and timing sooner in status page updates during long incidents
- Lessons
CircleCI says the combination of alerts should have been recognised sooner: brief error alerts that cleared on their own were treated as routine, and nothing alerted on the transaction log volume or on archiving lag. Because every write of the orchestration service went through one database and one transaction log, a backlog in that log slowed every pipeline, workflow and job.
IL-0288ZooKeeperWait rose to thousands of seconds on three redundant ClickHouse instances, degrading a CDN77 data pipelineCDN772026- Symptoms
At 13:30 UTC on 9 March 2026, CDN77's data team was alerted to a sudden rise in the ZooKeeperWait metric on the ClickHouse cluster behind one of its large data pipelines. Alerting for this cluster size is set at 10 sec for the low watermark and 20 sec for the high one, and the metric reached thousands of seconds. The same rise appeared on three symmetrically redundant ClickHouse instances in different datacenters, each with its own ZooKeeper instance, and the pipeline stayed degraded for over an hour, with no observable impact on internal users, customers or partners.
- Trigger
From 13:15 UTC two client machines that had been cut off from the network for several months came back and their log shippers sent months of queued, very small batches of health check data with old timestamps, spanning a very large time range.
- Root cause
- Component
- Contributing factor
- Detection
An alert on the ZooKeeperWait metric fired at 13:30 UTC, fifteen minutes after the problematic inserts began at 13:15. The cluster's alerting uses a low watermark of 10 sec and a high watermark of 20 sec.
- Remediation
- Dropped and recreated the one table partitioned by 5 minutes that had not cleared its backlog of parts
- Broadened that table's partitioning from minutes to hours
- Action items
- Reject out-of-range timestamps in the root MaterializedView tables
- Record statistics on rejected rows in a second materialized view
- Refine the deliberately wide rejection boundaries as data on rejections comes in
- Keep a minimal test scenario with an insert query whose timestamps span days or months
- Make a range of observability improvements
- Lessons
Data structure matters even in a pipeline built around volume: incoherent timestamps can destabilise it as effectively as changes in cardinality. A metric that looks odd and cannot be explained at once should not be set aside under incident pressure; the falling mean insert size was what led to the cause. Means and medians each have their place, and here the mean, not the median, exposed the problem. Partitioning has to be chosen carefully: too few partitions give oversized parts, slow mutations and costly or ineffective TTL, while too many slow column scans, add final merging to aggregating queries and overload the Keeper.
IL-0390PostHog US Cloud event ingestion slowed to delays of up to 2 days as writes to the Persons Postgres table stalledPostHog2025- Symptoms
From 11 November 2025 at 16:02 UTC, PostHog's event ingestion pipeline for US Cloud became severely degraded, and events for all customers in the US region were processed with delays from 10 minutes up to 2 days. Writes to the Postgres database that stores Person information could take multiple seconds per update, and the pipeline slowed until no standard scaling option helped.
- Trigger
The 32-bit OID space used to track TOASTed values of the Persons table's properties column, a JSONb field that often exceeds the 2KB threshold for out-of-line storage, was nearly exhausted.
- Root cause
- Component
- Contributing factor
- Remediation
- Created a new partitioned Persons table with a fresh TOAST table and OID space
- Added database triggers to keep the old and new Persons tables in sync for live writes
- Copied the existing Person data from the old table to the new one with a backfill script
- Changed ingestion and application code to write to the new table and read from it first, with fallback to the old table
- Deployed the web app changes to production under manual control rather than a fully automated rollout
- Scaled ingestion workers to process the accumulated backlog
- Paused ingestion when the MSK local disk reached about 85%
- Reduced the local retention of the affected Kafka topic
- Resumed ingestion after confirming there was enough disk headroom
- Moved the backfill into Dagster to finish it over the weekend
- Action items
- Add metrics and alerts for heavy disk read amplification per write
- Add metrics and alerts for TOAST table statistics
- Add metrics and alerts for other Postgres engine limits that matter at large scale
- Write runbooks for engine-level Postgres limits, with decision trees for migrating versus repairing in place
- Create customer communication runbooks with a clear escalation path and redundancies
- Evaluate other data stores for the persons database
- Complete the reconsolidation on the new Persons tables
- Improve the backfill tooling and the safeguards for Kafka tiered storage
- Design and operate Person-like tables so they avoid similar limits
- Lessons
TOAST OID exhaustion degrades writes long before the hard limit of about 4 billion OIDs, it is rare even at large scale, and standard dashboards for CPU, memory, IOPS and lock contention did not immediately point at it, so diagnosis took a day and a half without monitoring of TOAST growth, OID usage or disk reads per write. Many core features depended on timely updates to the persons table, so its slowdown reached a wide part of the product. The first backfill approach lacked visibility for a long migration, the Kafka tiered storage settings and alerts were not tuned for a large backlog, and the people who normally handle customer communications were all unavailable.
IL-0447An every RDS for MySQL instance slowed badly when its gp2 EBS BurstBalance ran out and IOPS fell to the baselineevery2024- Symptoms
The BurstBalance of an RDS instance began to fall rapidly and finally ran out, and the database's performance dropped sharply. The instance ran MySQL 5.7.44 on db.t3.medium with general purpose SSD (gp2) storage of 30GiB.
- Trigger
A complex SELECT query began writing large amounts of data to temporary tables, which raised WriteIOPS and used up the burst credits.
- Root cause
- Component
- Contributing factor
- Action items
- Consider tuning the query by reviewing indexes and rewriting it
- Consider moving the storage from gp2 to gp3 or increasing its size to raise the baseline IOPS
- Consider adjusting tmp_table_size and max_heap_table_size
- Consider moving to a more powerful instance type
- Consider monitoring BurstBalance with CloudWatch alerts and adding external monitoring such as Pingdom
- Lessons
A complex query can have a large effect on I/O, so database design and queries need continuous improvement, and query performance needs regular monitoring.
IL-0550Bitbucket Cloud's database slowed until connection pools saturated and requests timed out, leaving Pipelines pendingAtlassian2024- Symptoms
From 07:22 UTC on 22 February 2024, the bitbucket.org website and the Bitbucket Cloud APIs became slow, and Bitbucket Pipelines runs were badly delayed. Git requests over HTTPS and SSH kept working.
- Root cause
- Component
- Contributing factor
- Remediation
- Added resources to Bitbucket Pipelines to clear the backlog of jobs, which was fully cleared by 17:30 UTC
- Action items
- Reconfigure the vacuuming threshold for database tables with high write activity
- Adjust alert thresholds to catch this behaviour earlier
- Tune autoscaling and load shedding for the Pipelines services and increase build runner capacity
These 8 cases involve Database and PostgreSQL vacuum. 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
Capacity exhaustion8 cases
- Component
- Contributing factor
IL-0553CircleCI's orchestration database filled its transaction log volume, and no workflows or jobs started for 50 minutesCircleCI2026IL-0288ZooKeeperWait rose to thousands of seconds on three redundant ClickHouse instances, degrading a CDN77 data pipelineCDN772026IL-0390PostHog US Cloud event ingestion slowed to delays of up to 2 days as writes to the Persons Postgres table stalledPostHog2025IL-0447An every RDS for MySQL instance slowed badly when its gp2 EBS BurstBalance ran out and IOPS fell to the baselineevery2024IL-0550Bitbucket Cloud's database slowed until connection pools saturated and requests timed out, leaving Pipelines pendingAtlassian2024IL-0443A Repro Aurora MySQL reader restarted unexpectedly and writer insert latency rose about sevenfold for a day or moreRepro2019IL-0297Mezmo users could not sign in and log indexing lagged after the auth cache's Redis servers were OOM killedMezmo2019IL-0211A Mandrill PostgreSQL shard shut down at transaction ID wraparound and email sending was impaired for about 40 hoursMailchimp2019