IL-0309 Preset · 2026-04-13databaseaws
RDS PostgreSQL 메이저 버전 업그레이드가 점검 시간을 훨씬 넘겨 실패하면서 us2a 배포가 약 6시간 멈췄다
04:12 EDT 에 Preset 은 US East 1 운영 리전의 RDS 인스턴스를 PostgreSQL 14.7 에서 17.9 로 올리는 업그레이드를 시작했다. 주 데이터베이스 인스턴스는 38분 동안 사전 검사를 마친 뒤 04:51 에 내려가 스냅샷을 찍기 시작했다. 이 인스턴스의 볼륨은 500GB 였고 약 440GB 를 쓰고 있어 여유 공간은 약 64GB 였다. 스냅샷이 약 4.5시간 이어지는 동안 전체 스냅샷의 임시 파일과 메타데이터, pg_upgrade 작업 파일과 출력 로그, 길어진 스냅샷 동안 쌓인 WAL 이 남은 약 60GB 를 다 썼다. 여유 공간이 0이 되자 09:37 에 업그레이드가 실패했다.
스냅샷이 오래 걸린 이유는 RDS 가 메이저 버전 업그레이드 전에는 기존 스냅샷이 있어도 증분이 아닌 전체 스냅샷을 찍기 때문이었다. 이 인스턴스의 일일 자동 스냅샷은 증분이라 10~15분에 끝났고, 다른 리전의 업그레이드도 비슷한 시간에 스냅샷을 마쳤다. S3 스냅샷 처리량은 AWS 쪽 제약 때문에 EBS 볼륨에 프로비저닝한 처리량과 상관없이 약 30~45MB/s 를 넘지 못한다. 440GB 를 약 40MB/s 로 찍으면 전체 스냅샷에 최소 약 3시간이 걸린다. 그러나 이 상한은 평소에 드물게 찍는 전체 스냅샷에서만 드러났다. Preset 은 운영 이력과 AWS 문서 어디에도 이 인스턴스의 업그레이드 전 스냅샷이 약 4.5시간 걸린다는 분명한 단서가 없었다고 했다.
업그레이드가 실패하자 AWS 가 인스턴스를 업그레이드 전 상태로 자동으로 되돌렸다. 업그레이드 전 스냅샷은 10:10 EDT 에 끝났고, 인스턴스는 10:13 EDT 에 PostgreSQL 14.15 로 다시 올라와 서비스가 돌아왔다. 스냅샷에서 복원하지 않고 원래 데이터베이스 엔진을 되살렸기 때문에 데이터 손실이나 손상은 없었고, 수동 개입도 필요 없었다. 롤백 뒤 스냅샷은 자동으로 찍혀 11:29 EDT 에 끝났다. us2a 배포의 고객은 약 6시간 동안 Superset 을 쓰지 못했다.
- 심각도
- –
- 영향 범위
- Superset was unavailable for about 6 hours for all customers on the us2a production deployment; no data was lost or corrupted
- 영향 사용자
- All customers on the us2a production deployment
- 지역
- US East 1
- 감지까지
- –
- 복구까지
- 6h
증상
US East 1 운영 리전의 RDS PostgreSQL 을 14.7 에서 17.9 로 올리는 계획된 업그레이드가 점검 시간이 지나도 끝나지 않았다. 그동안 us2a 배포의 모든 고객이 Superset 에 접속하지 못했다.
04:12 EDT 에 ModifyDBInstance 호출로 업그레이드를 시작했다. API Gateway 와 Examples 인스턴스는 04:18 에 업그레이드를 마쳤지만, 주 데이터베이스 인스턴스는 사전 호환성 검사에만 38분이 걸렸다. 04:51 에 인스턴스가 내려가고 스냅샷이 시작됐다.
스냅샷은 몇 시간 동안 이어졌다. 05:28 에는 순차 읽기가 약 45MB/s 였고 쓰기는 거의 0이었다. 08:00 에는 I/O 처리량이 약 55MB/s 로 오르고 CPU 가 약 70% 로 뛰어 단계가 바뀌는 것처럼 보였다. 09:22 에는 읽기가 거의 0으로 떨어지고 쓰기가 130MB/s 로 치솟아 인스턴스가 회복하는 것처럼 보였다.
09:37 에 업그레이드가 "Postgres cluster is in a state where pg_upgrade cannot be completed successfully." 오류로 실패했다. 500GB 볼륨에서 시작 때 약 64GB 남아 있던 여유 공간이 0이 된 뒤였다.
스냅샷이 약 2.5시간째 진행 중이던 07:26 에 AWS 지원 티켓을 열었다. 08:36 에 AWS 는 업그레이드가 정상으로 진행 중이고, 개입할 방법이 없으며, 예상 완료 시각도 알 수 없다고 답했다.
이 업그레이드는 샌드박스, 스테이징, 여러 운영 리전에서 15분 안에 끝났다. 같은 인스턴스의 일일 자동 스냅샷도 늘 10~15분에 끝났기 때문에, 업그레이드 전 스냅샷이 약 5시간 걸리리라고 볼 근거가 없었다.
원인
- 촉발
- Preset 이 US East 1 운영 리전의 모든 RDS 인스턴스에서 PostgreSQL 을 14.7 에서 17.9 로 올리는 계획된 메이저 버전 업그레이드를 시작했다. RDS 가 업그레이드 전에 찍는 전체 스냅샷이 약 4.5시간 이어지면서 주 데이터베이스 인스턴스의 남은 저장 공간을 다 썼다.
감지
Preset 은 계획된 업그레이드를 지켜보던 중 05:28 EDT 에 스냅샷의 I/O 급증을 보았다. 06:00 에 상태 페이지에 사고를 올렸고, 07:26 에 AWS 지원 티켓을 열었다.
조치
- 업그레이드가 실패한 뒤 AWS 가 인스턴스를 업그레이드 전 상태로 자동으로 되돌렸고, 인스턴스가 10:13 EDT 에 PostgreSQL 14.15 로 다시 올라와 서비스가 돌아왔다. 수동 개입은 없었다.
후속 조치
- 다음 메이저 버전 업그레이드를 시도하기 전에 운영 규모의 전체 데이터로 업그레이드 과정을 미리 해 보고 저장 공간과 소요 시간 추정이 맞는지 확인한다.
교훈
RDS 는 메이저 버전 업그레이드 전에 기존 스냅샷과 상관없이 전체 스냅샷을 찍는다. 같은 인스턴스의 증분 스냅샷 시간이나 다른 환경의 업그레이드 시간으로는 이 스냅샷이 얼마나 걸릴지 알 수 없었고, 약 30~45MB/s 인 S3 스냅샷 처리량 상한은 드문 전체 스냅샷에서만 드러났다. 그래서 Preset 은 다음 메이저 버전 업그레이드 전에 운영 규모의 데이터로 저장 공간과 소요 시간을 먼저 확인한다.
출처
- https://status.preset.io/incidents/01KP34GXYRB4A4RHNH1Y43KSWM/write-up · official-status
관련 사례
IL-0334RDS MySQL 의 bookmarks 테이블이 2TB 파일 크기 한도에 닿아 INSERT 가 실패하고 Instapaper 가 31시간 동안 멈췄다Instapaper · 2017같은 원인 · 공통 데이터베이스, 데이터베이스 백업과 스냅숏
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0288CDN77 의 ClickHouse 데이터 파이프라인에서 이중화된 인스턴스 세 곳의 ZooKeeperWait 가 수천 초로 치솟아 복제가 한 시간 넘게 느려졌다CDN77 · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0305Intercom 의 PlanetScale 샤드 하나에서 복제본이 CPU 100% 로 주 데이터베이스를 따라가지 못해 받은편지함에 최대 2.2시간 전의 데이터가 보였다Intercom · 2026같은 원인 · 공통 데이터베이스
IL-0390PostHog US Cloud 의 Persons Postgres 데이터베이스 쓰기가 크게 느려져 이벤트와 persons 수집이 최대 2일 지연됐다PostHog · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0287Atlas 와 Cloud Manager 의 모니터링을 받치는 내부 데이터베이스 클러스터의 샤드 하나가 과부하되어 지표 수집과 클러스터 작업이 늦어졌다MongoDB · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0298Wikimedia sessionstore 의 Cassandra 노드가 디스크가 가득 차 잇따라 죽고 쿼럼을 잃어 편집이 실패했다Wikimedia Foundation · 2025같은 원인 · 공통 데이터베이스
IL-0312max_connections 를 올리려고 재시작한 주 PostgreSQL 데이터베이스가 다시 올라오지 않아 Gadget 의 모든 앱 요청이 멈췄다Gadget · 2024같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0110Grafana Agent 파드가 메모리를 많이 쓰던 노드에 Hangfire 파드가 함께 올라가 시스템 OOM 으로 CrashLoopBackOff 를 반복했고, 노드가 응답을 멈추고 NotReady 가 됐다.DFDS · 2024같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0202갑자기 몰린 쿼리와 데이터베이스 쓰기로 Honeycomb 수집 호스트가 메모리 부족으로 죽었고, 쿠버네티스 CrashLoopBackOff 가 용량 회복을 막아 US1 이벤트 수집이 한 시간 넘게 불안정했다Honeycomb · 2023 · sev1같은 원인 · 공통 데이터베이스
IL-0386Google Cloud 로 옮긴 뒤 GKE 노드에서 Postgres 연결 타임아웃과 memcached i/o timeout 이 간헐적으로 튀었다incident.io · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스 백업과 스냅숏
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0206GKE 파드 안의 Consul 에이전트가 메모리 급증으로 거듭 OOM kill 되어 Rails 파드가 데이터베이스 복제본을 찾지 못했고, 모든 쿼리가 primary 로 몰려 GitLab.com 이 느려졌다.GitLab · 2022같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0496전역 복제 Cassandra 클러스터에서 모든 리전의 인스턴스 CPU 가 100% 로 치솟아 쿼리가 타임아웃됐고, 같은 부하가 이틀 저녁 더 찾아왔다Ably · 2020같은 원인 · 공통 데이터베이스
IL-0443Aurora MySQL reader 가 이유 없이 재시작한 뒤 writer 의 insert latency 가 7배쯤 오르고 replication lag 가 하루 넘게 이어졌다Repro · 2019같은 원인 · 공통 데이터베이스
IL-0037imagePullPolicy가 Always인 DaemonSet이 크래시 루프를 돌며 이미지를 계속 받아, NAT 세 대를 같이 쓰던 리전 전체가 이미지 레지스트리에서 429로 막혔다Datadog · 2019같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0211Mandrill 의 PostgreSQL 샤드 하나가 트랜잭션 ID 랩어라운드를 막으려고 쓰기를 멈춰 약 40시간 동안 메일 발송이 줄었다Mailchimp · 2019같은 원인 · 공통 데이터베이스
IL-0064CPU 를 많이 쓰는 파드가 Google Cloud 노드 하나에 몰려 노드가 커널 패닉으로 죽었고, 다시 배치된 파드가 다음 노드를 또 죽이며 웹사이트와 API 가 멈췄다.Moonlight · 2019같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0333사양을 낮춘 RDS PostgreSQL 인스턴스가 피크 부하를 못 버텨 헬스 체크가 실패하고 Buildkite 대시보드가 몇 시간 동안 내려갔다Buildkite · 2016같은 원인 · 공통 데이터베이스
IL-0282US-East 리전의 DynamoDB 스토리지 서버들이 멤버십 정보를 받지 못해 스스로 요청 처리에서 빠지면서 고객 요청의 약 55% 가 실패했다Amazon Web Services · 2015같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0309
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0309/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.