IL-0307 Supabase · 2025-01-29database
Supabase us-east-1 에서 Supavisor 2.0 업그레이드 뒤 Postgres 연결 풀러가 테넌트 약 80% 의 연결을 끊었다
Supabase 는 Postgres 연결 풀러인 Supavisor 를 10개 리전에서 2.0 으로 올리는 메이저 업그레이드를 계획했다. 새 버전은 쿼리 지연과 가용 영역 인식이 나아진 버전이었고, 지난 몇 주 동안 더 작은 9개 리전에 문제없이 배포되었다. 2025년 1월 29일 13:00 UTC 에 유지보수가 시작되어 9개 리전에 배포되었고, 클라이언트 연결을 다시 맺는 것 말고는 중단이 거의 없었다. 14:46 UTC 에 us-east-1 배포도 끝났고 클라이언트가 다시 연결되어 처리량이 안정되었다.
16:05:50 UTC 에 :ets.select_delete 작업이 실패하며 ETS 테이블이 손상되었다. 16:05:56 UTC 부터 Syn 과 Cachex 라이브러리에서 ETS 를 쓰는 프로세스 레지스트리 조회가 실패해 테넌트가 다시 연결하지 못했다. 16:06:00 UTC 에는 이 레지스트리가 관리하던 프로세스들이 죽어 테넌트 약 80% 의 연결이 끊겼다. 16:11 UTC 에 장애를 선언하고 이전 Supavisor 버전으로 롤백을 시작했다. 롤백은 16:53 UTC 에 끝났고 이전 안정 버전으로 정상 동작이 돌아왔다. 장애는 1시간쯤 이어졌다.
- 심각도
- –
- 영향 범위
- Postgres connections through the Supavisor pooler and Supabase Storage connectivity in us-east-1
- 영향 사용자
- about 80% of tenants in us-east-1
- 지역
- us-east-1
- 감지까지
- 6m
- 복구까지
- 48m
증상
2025년 1월 29일 16:05 UTC 에 us-east-1 의 Supavisor 클라이언트 대다수가 연결이 끊겼고 다시 연결하는 데 자꾸 실패했다. Supavisor 는 Postgres 연결을 관리하는 연결 풀러다. Supabase Storage 연결도 함께 문제를 겪었다.
us-east-1 배포는 14:46 UTC 에 끝났고, 그때는 클라이언트가 다시 연결되고 처리량도 안정되어 있었다. 한 시간 넘게 지난 16:05:50 UTC 에 :ets.select_delete 작업이 실패하며 ETS 테이블이 손상되었다. ETS 는 Erlang Term Storage 다. 16:05:56 UTC 부터 Syn 과 Cachex 라이브러리에서 ETS 를 쓰는 프로세스 레지스트리 조회가 실패해 테넌트가 다시 연결하지 못했다. 16:06:00 UTC 에 이 레지스트리가 관리하던 프로세스들이 죽으면서 테넌트 약 80% 의 연결이 끊겼다.
조사 중에 Supabase 는 데이터베이스 연결은 당분간 직접 연결로 바꿔 쓰라고 안내했다. Storage 연결은 연결 풀러 문제가 풀려야 돌아온다고 알렸다.
원인
원인 배포 결함
- 촉발
- us-east-1 에 Supavisor 2.0 으로 올리는 메이저 업그레이드를 배포한 뒤, :ets.select_delete 작업이 실패해 ETS 테이블이 손상되었다.
감지
–
조치
- 16:11 UTC 에 이전 Supavisor 버전으로 롤백을 시작했고, 16:53 UTC 에 롤백이 끝나 이전 안정 버전으로 정상 동작이 돌아왔다.
후속 조치
- 롤백 시간을 40분에서 90초 안으로 줄인다.
- 클라이언트 연결이 끊기는 것을 2분 안에 잡도록 알림을 고친다.
교훈
Supabase 는 이 장애로 롤백이 느리고, 부하가 걸린 상태에서 예상하지 못한 장애를 견디는 힘이 약하다는 점이 드러났다고 밝혔다. 앞으로 비슷한 배포 실패의 영향을 줄이려고 롤백 효율을 높이는 데 집중한다고 썼다.
출처
- https://status.supabase.com/incidents/zk493yyz17hy · official-status · 보관본
관련 사례
같은 원인 · 공통 데이터베이스, 데이터베이스 프록시와 커넥션 풀러
같은 원인 · 공통 데이터베이스, 데이터베이스 프록시와 커넥션 풀러
같은 원인 · 공통 데이터베이스
IL-0136Sweden Central 리전에서 내부 서비스 배포가 캐시를 비워 메타데이터 백엔드에 평소 20배의 트래픽이 몰렸고, 데이터베이스 연결에 기대는 헬스 체크가 인스턴스를 계속 재시작시켜 Azure OpenAI 요청이 6시간 가까이 실패했다Microsoft Azure · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0510MIT Learn 운영 RDS PostgreSQL 의 저장 공간이 임시 파일로 가득 차 learn.mit.edu 가 세 시간 동안 503 과 504 를 냈다MIT Open Learning · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0547Buildkite 의 Agent API, REST API, GraphQL 이 annotations 테이블 쿼리 타임아웃으로 4시간 가까이 저하됐다Buildkite · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0324External Storage 데이터베이스 클러스터에 과부하가 걸려 mw-api-int, mw-parsoid, mw-jobrunner 의 지연과 데이터베이스 오류가 늘었다Wikimedia Foundation · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0523TANF-app 의 운영 배포가 PostgreSQL 마이그레이션 실패로 두 달 동안 막힘U.S. Department of Health and Human Services · 2023같은 원인 · 공통 데이터베이스
IL-0567쿠키런: 오븐브레이크의 패키지 매출 랭킹 기능을 배포한 뒤 Aurora MySQL CPU가 100%에 이르러 유저가 게임에 접속하지 못했다Devsisters · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0524인덱스를 다시 만드는 마이그레이션이 운영에서 Transactions 테이블을 잠가 Open Collective 서비스가 느려짐Open Collective · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0307
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0307/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.